Método Node.js fs.rm()

El método fs.rm() se usa para eliminar un archivo en la ruta dada. También se puede utilizar de forma recursiva para eliminar directorios.

Sintaxis:

fs.rm( path, options, callback );

Parámetros: este método acepta tres parámetros, como se mencionó anteriormente y se describe a continuación:

  • ruta: contiene la ruta del archivo que se debe eliminar. Puede ser una string, un búfer o una URL.
  • opciones: Es un objeto que se puede usar para especificar parámetros opcionales que afectarán la operación de la siguiente manera:
    • force: Es un valor booleano. Las excepciones se ignorarán si la ruta no existe.
    • recursivo: Es un valor booleano que especifica si se realiza la eliminación recursiva del directorio. En este modo, los errores no se informan si no se encuentra la ruta especificada y la operación se vuelve a intentar si falla. El valor predeterminado es falso.
  • callback: Es la función que sería llamada cuando se ejecuta el método.
    • err: Es un error que se lanzaría si falla la operación.

Los siguientes ejemplos ilustran el método fs.rm() en Node.js:

Ejemplo 1: este ejemplo utiliza el método fs.rm() para eliminar un archivo.

Nombre de archivo: index.js

Javascript

// Import necessary modules
let fs = require('fs');
  
// List files before deleting
getCurrentFilenames();
  
fs.rm('./dummy.txt', { recursive:true }, (err) => {
    if(err){
        // File deletion failed
        console.error(err.message);
        return;
    }
    console.log("File deleted successfully");
      
    // List files after deleting
    getCurrentFilenames();
})
  
// This will list all files in current directory
function getCurrentFilenames() { 
    console.log("\nCurrent filenames:"); 
    fs.readdirSync(__dirname).forEach(file => { 
        console.log(file); 
    }); 
    console.log(""); 
}

Ejecute el archivo index.js con el siguiente comando:

node index.js

Producción:

Current filenames:
dummy.txt        
index.js
node_modules     
package-lock.json
package.json

File deleted successfully

Current filenames:
index.js
node_modules
package-lock.json
package.json

Ejemplo 2: este ejemplo usa el método fs.rm() con el parámetro recursivo para eliminar directorios.

Nombre de archivo: index.js

Javascript

// Import the filesystem module 
const fs = require('fs'); 
    
// List the files in current directory 
getCurrentFilenames(); 
    
// Trying to delete directory without the recursive parameter 
fs.rm("./build", { recursive: false }, (err) => { 
  if (err) { 
    console.error(err);
  } 
  else { 
    console.log("Non Recursive: Directory Deleted!"); 
  } 
}); 
  
// Using the recursive option to delete directory 
fs.rm("./build", { recursive: true }, (err) => { 
  if (err) { 
    console.error(err); 
  } 
  else { 
    console.log("Recursive: Directory Deleted!"); 
    
    // List files after delete 
    getCurrentFilenames(); 
  } 
}); 
    
// List all files in current directory
function getCurrentFilenames() { 
  console.log("\nCurrent filenames:"); 
  fs.readdirSync(__dirname).forEach(file => { 
    console.log(file); 
  }); 
  console.log("\n"); 
}

Ejecute el archivo index.js con el siguiente comando:

node index.js

Producción:

Current filenames:
build

index.js
node_modules     
package-lock.json
package.json

SystemError [ERR_FS_EISDIR]: Path is a directory: rm returned EISDIR 
(is a directory) ./build
    at internal/fs/utils.js:688:23
    at FSReqCallback.oncomplete (fs.js:184:5) {
  code: 'ERR_FS_EISDIR',
  info: {
    code: 'EISDIR',
    message: 'is a directory',
    path: './build',
    syscall: 'rm',
    errno: 21
  },
  errno: [Getter/Setter: 21],
  syscall: [Getter/Setter: 'rm'],
  path: [Getter/Setter: './build']
}

Recursive: Directory Deleted!

Current filenames:
index.js
node_modules
package-lock.json
package.json

Referencia: https://nodejs.org/api/fs.html#fs_fs_rm_path_options_callback

Publicación traducida automáticamente

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