📜  Node.js fs.rm() 方法(1)

📅  最后修改于: 2023-12-03 15:17:54.486000             🧑  作者: Mango

Node.js fs.rm() 方法

fs.rm() 方法是 Node.js v14.14.0 版本新增的文件系统 API。它用于删除文件或目录。这个方法接受两个参数:文件路径和一个可选的选项对象。

语法
fs.rm(path, options, callback)

参数说明

  • path:字符串,要删除的文件或目录的路径。
  • options:可选对象,如果要指定高级选项,则传递一个 JSON 对象。
  • callback:回调函数,将被调用一旦操作完成。这个函数有一个参数,如果操作成功,传递为 null,否则是一个 Error 对象。

options 选项

  • force:布尔值,表示强制删除。默认为 false,当 force 设置为 true 时,如果目录不为空,目录和子目录中的所有文件都将被删除。
  • recursive:布尔值,表示是否删除目录中的所有内容。默认为 false,当 recursive 设置为 true 时,所有子目录和文件都将被递归删除。
示例
const fs = require('fs');

// 删除文件
fs.rm('./example.txt', (err) => {
  if (err) throw err;
  console.log('文件已删除');
});

// 删除空目录
fs.rm('./emptydir', (err) => {
  if (err) throw err;
  console.log('目录已删除');
});

// 删除非空目录
fs.rm('./dirname', { recursive: true, force: true }, (err) => {
  if (err) throw err;
  console.log('目录和子目录已删除');
});

在上面的示例中,第一个请求删除了名为 example.txt 的文件,第二个请求删除空的目录 emptydir,第三个请求删除名为 dirname 的目录以及其所有子目录和文件。

在最后一个请求中,我们设置了 recursiveforce 选项,以确保删除所有内容。如果未设置 force 选项,则可能会遇到如下错误:Error: ENOTEMPTY: directory not empty, rmdir ...

注意事项
  • 在 Windows 操作系统上,当尝试删除一个被另一个进程打开的文件时,会抛出“EBUSY”错误。
  • 当删除一个符号链接时,删除的是符号链接本身而不是链接指向的文件。如果要删除链接指向的文件,请使用 fs.unlink() 方法。
  • 如果目录不存在,将会抛出一个“ENOENT”错误。