删除不为空的目录

node.js Node.js

ANear

2020-03-19

在我的Node应用程序中,我需要删除一个包含一些文件的目录,但fs.rmdir仅适用于空目录。我怎样才能做到这一点?

第2295篇《删除不为空的目录》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

6个回答
千羽 2020.03.19

只需使用rmdir模块这很简单。

达蒙Davaid斯丁 2020.03.19

根据fs文档fsPromises当前提供的recursive选项是实验性的,至少就我个人而言,在Windows上,该选项会删除目录及其中的任何文件。

fsPromises.rmdir(path, {
  recursive: true
})

是否recursive: true在Linux和MacOS上删除文件?

TomAL 2020.03.19

2020更新

从版本12.10.0 起,为选项添加了recursiveOption

请注意,递归删除是实验性的

因此,您可以进行同步:

fs.rmdirSync(dir, {recursive: true});

或异步:

fs.rmdir(dir, {recursive: true});
JimJim小小 2020.03.19

在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

番长西里神无 2020.03.19

截至2019年...

Node.js 12.10.0版本开始,它fs.rmdir支持recursive选项,因此您最终可以执行以下操作:

fs.rmdir(dir, { recursive: true });

recursive选项以递归方式删除整个目录。

Tony宝儿 2020.03.19

为此有一个名为rimrafhttps://npmjs.org/package/rimraf的模块它提供的功能与rm -Rf

异步用法:

var rimraf = require("rimraf");
rimraf("/some/directory", function () { console.log("done"); });

同步使用情况:

rimraf.sync("/some/directory");

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android