¿Cómo verificar que la ruta dada es un archivo o directorio en node.js?

A veces es necesario verificar si la ruta dada es un archivo o un directorio para que se puedan realizar diferentes operaciones en función del resultado. Por ejemplo, para registrar la información del directorio y el archivo por separado.
En Node.js, el manejo de archivos está a cargo del módulo fs. Puedes leer más sobre esto aquí . Podemos verificar la ruta del archivo o directorio en Node.js tanto de forma síncrona como asíncrona.

Nota: la versión asincrónica suele ser preferible si le preocupa el rendimiento de la aplicación.

Método síncrono: las operaciones síncronas son excelentes para realizar operaciones de archivo/directorio únicas antes de devolver un módulo. Para verificar la ruta en modo síncrono en el módulo fs, podemos usar el método statSync(). El método fs.statSync(ruta) devuelve la instancia de fs.Stats que se asigna a estadísticas variables. Un objeto fs.Stats proporciona información sobre un archivo. El método stats.isFile() devuelve verdadero si la ruta del archivo es Archivo; de lo contrario, devuelve falso. El método stats.isDirectory() devuelve verdadero si la ruta del archivo es Directorio; de lo contrario, devuelve falso.

Ejemplo 1:

// Require the given module 
var fs = require('fs');
   
// Use statSync() method to store the returned
// instance into variable named stats
var stats = fs.statSync("/Users/divyarani/Documents/geekforgeeks/geeks.js");
   
// Use isFile() method to log the result to screen
console.log('is file ? ' + stats.isFile());
  
var stats = fs.statSync("/Users/divyarani/Documents/geekforgeeks/geek");
   
// Use isDirectory() method to log the result to screen
console.log('is directory ? ' + stats.isDirectory());

Producción:

is file ? true
is directory ? true

Ejemplo 2:

// Require the given module 
var fs = require('fs');
   
// Use statSync() method to store the returned
// instance into variable named stats
var stats = fs.statSync("/Users/divyarani/Documents/geekforgeeks/geek");
   
// Use isFile() method to log the result to the screen
console.log('is file ? ' + stats.isFile());
    
var stats = fs.statSync("/Users/divyarani/Documents/geekforgeeks/geeks.js");
   
// Use isDirectory() method to log the result to screen
console.log('is directory ? ' + stats.isDirectory());

Producción:

is file ? false
is directory ? false

Método asíncrono: en la versión asíncrona, el bloque de código dentro de la función no bloqueará en su mayoría al usuario final y no se impedirá que el usuario realice diferentes acciones para varios subprocesos. Para verificar la ruta en modo asíncrono en el módulo fs, podemos usar el método fs.stat(). El método fs.stat() toma dos parámetros, el primer parámetro es la ruta y el segundo es la función de devolución de llamada con dos parámetros, uno es para el error en caso de que ocurra un error y el segundo parámetro son los datos recuperados llamando a fs.stat() método que se almacena en la variable stats. El método stats.isFile() devuelve verdadero si la ruta del archivo es Archivo; de lo contrario, devuelve falso. El método stats.isDirectory() devuelve verdadero si la ruta del archivo es Directorio; de lo contrario, devuelve falso.

Ejemplo 1:

// Require the given module 
var fs = require('fs'),
path = "/Users/divyarani/Documents/geekforgeeks/geek"
   
// Use stat() method
fs.stat(path, (err, stats) => {
    if( !err ){
         if(stats.isFile()){
             console.log('is file ? ' + stats.isFile());
         }
   
         else if(stats.isDirectory()){
             console.log('is directory? ' + stats.isDirectory());
         }
     }
     else
         throw err; 
});

Producción:

is directory? true

Ejemplo 2:

// Require the given module
var fs = require('fs'),
path = "/Users/divyarani/Documents/geekforgeeks/geeks.js"
  
// Use stat() method
fs.stat(path, (err, stats) => {
  if( !err ){
       if(stats.isFile()){
           console.log('is file ? ' + stats.isFile());
       }
  
       else if(stats.isDirectory()){
           console.log('is directory? ' + stats.isDirectory());
       }
   }
   else
      throw err; 
});

Producción:

is file ? true

Publicación traducida automáticamente

Artículo escrito por DivyaRani1 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 *