Node.js fs.rm () Метод

Опубликовано: 26 Июля, 2021

Метод fs.rm () используется для удаления файла по заданному пути. Его также можно использовать рекурсивно для удаления каталогов.

Синтаксис:

 fs.rm (путь, параметры, обратный вызов);

Параметры: этот метод принимает три параметра, как указано выше и описано ниже:

  • path: содержит путь к файлу, который необходимо удалить. Это может быть строка, буфер или URL.
  • options: это объект, который можно использовать для указания дополнительных параметров, которые будут влиять на операцию следующим образом:
    • force: это логическое значение. Если путь не существует, исключения будут игнорироваться.
    • рекурсивный: это логическое значение, указывающее, выполняется ли рекурсивное удаление каталога. В этом режиме об ошибках не сообщается, если указанный путь не найден, и операция повторяется в случае сбоя. Значение по умолчанию неверно.
  • обратный вызов: это функция, которая будет вызываться при выполнении метода.
    • err: это ошибка, которая будет выдана, если операция завершится неудачно.

Примеры ниже иллюстрируют метод fs.rm () в Node.js:

Пример 1. В этом примере для удаления файла используется метод fs.rm ().

Имя файла: 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( " Current filenames:" );
fs.readdirSync(__dirname).forEach(file => {
console.log(file);
});
console.log( "" );
}

Запустите файл index.js, используя следующую команду:

 узел index.js

Выход:

 Текущие имена файлов:
dummy.txt       
index.js
node_modules     
пакет-lock.json
package.json

Файл успешно удален

Текущие имена файлов:
index.js
node_modules
пакет-lock.json
package.json

Пример 2: В этом примере для удаления каталогов используется метод fs.rm () с рекурсивным параметром.

Имя файла: 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( " Current filenames:" );
fs.readdirSync(__dirname).forEach(file => {
console.log(file);
});
console.log( " " );
}

Запустите файл index.js, используя следующую команду:

 узел index.js

Выход:

 Текущие имена файлов:
строить

index.js
node_modules     
пакет-lock.json
package.json

SystemError [ERR_FS_EISDIR]: Путь - это каталог: rm вернул EISDIR 
(это каталог) ./build
    на внутреннем / fs / utils.js: 688: 23
    в FSReqCallback.oncomplete (fs.js: 184: 5) {
  код: 'ERR_FS_EISDIR',
  Информация: {
    код: 'EISDIR',
    сообщение: 'это каталог',
    путь: './build',
    системный вызов: 'rm',
    номер ошибки: 21
  },
  errno: [Getter / Setter: 21],
  системный вызов: [Getter / Setter: 'rm'],
  путь: [Getter / Setter: './build']
}

Рекурсивно: каталог удален!

Текущие имена файлов:
index.js
node_modules
пакет-lock.json
package.json

Ссылка: https://nodejs.org/api/fs.html#fs_fs_rm_path_options_callback