一、功能特性
1. fs.unlink
1.1 用途
最初设计主要用于删除文件。它不能直接用于删除目录,如果尝试使用 unlink
删除目录,在大多数情况下会抛出错误。
1.2. 操作逻辑
当调用 unlink
时,系统会移除文件的目录项,减少文件的链接计数。当链接计数降为 0 且没有进程打开该文件时,文件占用的磁盘空间才会被释放。
const fs = require("fs");
const filePath = "example.txt";
fs.unlink(filePath, (err) => {if (err) {console.error("删除文件时出错:", err);} else {console.log("文件删除成功");}
});
2. fs.rm
2.1 用途
既可以删除文件,也可以删除目录。它提供了更强大的递归删除能力,可用于删除包含子目录和文件的整个目录树。
2.2 操作逻辑
删除文件时和 unlink
类似,但在删除目录时,会递归地处理目录及其子目录和文件,按照从内到外的顺序依次删除。
2.3 删除文件
const fs = require("fs/promises");const filePath = "example.txt";
fs.rm(filePath).then(() => {console.log("文件删除成功");}).catch((err) => {console.error("删除文件时出错:", err);});
2.4 递归删除目录
const fs = require("fs/promises");
const dirPath = "exampleDir";
fs.rm(dirPath, { recursive: true, force: true }).then(() => {console.log("目录删除成功");}).catch((err) => {console.error("删除目录时出错:", err);});
二、兼容性
1. fs.unlink
是一个比较传统的方法,在早期的 Node.js 版本中就已经存在,兼容性非常好。如果你需要支持较旧的 Node.js 版本,使用 unlink
是一个不错的选择。
2. fs.rm
是在 Node.js 14.14.0 版本引入的新方法。在较旧的 Node.js 版本中无法使用,如果你的项目需要兼容旧版本的 Node.js,就不能使用 fs.rm
。
三、参数和灵活性
1. fs.unlink
它的参数相对简单,通常只需要传入要删除的文件路径和一个可选的回调函数(在异步版本中),灵活性较低。
2. fs.rm
提供了更多的参数选项,例如 recursive
和 force
。recursive
用于指定是否递归删除目录及其内容,force
用于在文件或目录不存在时避免抛出错误,增加了操作的灵活性。