在我的Node应用程序中,我需要删除一个包含一些文件的目录,但fs.rmdir
仅适用于空目录。我怎样才能做到这一点?
删除不为空的目录
根据fs
文档,fsPromises
当前提供的recursive
选项是实验性的,至少就我个人而言,在Windows上,该选项会删除目录及其中的任何文件。
fsPromises.rmdir(path, {
recursive: true
})
是否recursive: true
在Linux和MacOS上删除文件?
2020更新
从版本12.10.0 起,为选项添加了recursiveOption。
请注意,递归删除是实验性的。
因此,您可以进行同步:
fs.rmdirSync(dir, {recursive: true});
或异步:
fs.rmdir(dir, {recursive: true});
在Node.js的最新版本(12.10.0或更高版本),在rmdir
风格的功能fs.rmdir()
,fs.rmdirSync()
以及fs.promises.rmdir()
有一个新的实验性的选项recursive
,允许删除非空目录,例如
fs.rmdir(path, { recursive: true });
GitHub上的相关PR:https : //github.com/nodejs/node/pull/29168
截至2019年...
从Node.js 12.10.0版本开始,它fs.rmdir
支持recursive
选项,因此您最终可以执行以下操作:
fs.rmdir(dir, { recursive: true });
该recursive
选项以递归方式删除整个目录。
为此有一个名为rimraf
(https://npmjs.org/package/rimraf)的模块。它提供的功能与rm -Rf
异步用法:
var rimraf = require("rimraf");
rimraf("/some/directory", function () { console.log("done"); });
同步使用情况:
rimraf.sync("/some/directory");
只需使用rmdir模块!这很简单。