¿Cómo operar el método fs.lstat() basado en devolución de llamada con promesas en Node.js?

El método fs.lstat() se define en el módulo Sistema de archivos de Node.js. El módulo del Sistema de Archivos es básicamente para interactuar con el disco duro de la computadora del usuario. El método lstat() brinda información específica de archivos y carpetas utilizando métodos definidos en objetos de estadísticas (datos proporcionados por lstat).
El método fs.lstat() se basa en la devolución de llamada. El uso de métodos de devolución de llamada conduce a una gran posibilidad de anidamiento de devolución de llamada o problemas infernales de devolución de llamada. Por lo tanto, para evitarlo, casi siempre nos gusta trabajar con un método basado en promesas. Usando algunos métodos adicionales de node.js, podemos operar un método basado en devolución de llamada de manera prometedora.
Sintaxis: 
 

fs.lstat(path, options)

Nota: No se requiere devolución de llamada ya que operamos el método con promesas.
Parámetro: Este método acepta dos parámetros como se mencionó anteriormente y se describe a continuación: 
 

  • ruta: Es una string, búfer o url que especifica la ruta al directorio, cuyo contenido intentamos leer.
  • options: Es un parámetro opcional. Un parámetro de opciones es ‘bigint’, es un valor booleano. Aquí especificamos si el valor numérico en el objeto de estadísticas devuelto por fs.lstat() es bigint o no (predeterminado-falso).

Valor devuelto: si el método opera con promesas, devuelve una promesa resuelta o rechazada. La promesa se resuelve con el objeto de estadísticas si el directorio se lee con éxito; de lo contrario, se rechaza con un objeto de error si ocurre algún error (el directorio especificado en el ejemplo no existe o no tiene permisos para leer archivos, etc.).
El objeto de estadísticas devuelto por la promesa resuelta tiene algunas propiedades y métodos definidos que ayudan a obtener algunos detalles específicos sobre los archivos o carpetas de destino. Algunos de los métodos se especifican a continuación.
 

  • stats.isDirectory(): devuelve verdadero si el objeto stats describe un directorio del sistema de archivos.
  • stats.isFile(): devuelve verdadero si el objeto de estadísticas describe un archivo normal.
  • stats.isSocket(): Devuelve verdadero si el objeto stats describe un socket.
  • stats.isSymbolicLink(): devuelve verdadero si el objeto stats describe un enlace simbólico.
  • stats.isFile(): devuelve verdadero si el objeto de estadísticas describe un archivo normal.
  • stats.isFIFO(): devuelve verdadero si el objeto de estadísticas describe el primero en entrar, el primero en salir.
  • stats.size: Especifica el tamaño del archivo en bytes.
  • stats.blocks: Especifica el número de bloques asignados para el archivo.

Ejemplo 1: Nombre de archivo: index.js 
 

javascript

// Program to identify files and folders
// of a directory
 
// Importing File System and Utilities module
const fs = require('fs')
const util = require('util')
 
// Convert callback based methods to
// promise based methods
const readDir = util.promisify(fs.readdir)
const lStat = util.promisify(fs.lstat)
 
 
const fileOrFolder = async (path) => {
    const filenames = await readDir(path)
 
    for (let filename of filenames) {
 
        // Calling lstat method to give the
        // stats object for every directory
        const stats = await lStat(filename)
 
        // Check file or folder
        if (stats.isFile()) {
            console.log(
            `${filename} ---------> File`)
        } else {
            console.log(
            `${filename} ---------> Folder`)
        }
    }
}
 
// Driver code
// The process.cwd() gives current
// working directory
fileOrFolder(process.cwd())
 
    // If promise is rejected
    .catch(err => {
        console.log(`Error occurs,
        Error code -> ${err.code},
        Error No -> ${err.errno} `);
    });

Ejecute el archivo index.js con el siguiente comando: 
 

node index.js

Producción: 
 

Ejemplo 2: Nombre de archivo: index.js 
 

javascript

// Program to count the size of
// directories in bytes
 
// Importing File System and
// Utilities module
const fs = require('fs')
const util = require('util')
 
// Convert callback based methods to
// promise based methods
const readDir = util.promisify(fs.readdir)
const lStat = util.promisify(fs.lstat)
 
const sizeOfDirectories = async (path) => {
    const filenames = await readDir(path)
    for (let filename of filenames) {
 
        // Calling lstat method to give the
        // stats object for every directory
        const stats = await lStat(filename)
 
        // Print size of each directory
        console.log(`${filename}
          --------> ${stats.size} bytes`)
    }
}
 
// Driver code
// The process.cwd() gives current
// working directory
sizeOfDirectories(process.cwd())
    // If promise is rejected
    .catch(err => {
        console.log(`Error occurs,
        Error code -> ${err.code},
        Error No -> ${err.errno}`);
    })

Ejecute el archivo index.js con el siguiente comando: 
 

node index.js

Producción: 
 

Publicación traducida automáticamente

Artículo escrito por hunter__js y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *