如何在不删除Node.js中的目录的情况下从目录中删除所有文件

时间:2014-11-22 00:58:37

标签: javascript node.js

如何在不使用Node.js删除目录的情况下从目录中删除所有文件?
我想删除临时文件。我对文件系统没有任何好处。

我找到了this方法,它将删除文件和目录。在那里,像/path/to/directory/*这样的东西不会起作用。

我真的不知道应该使用哪些命令。谢谢你的帮助。

6 个答案:

答案 0 :(得分:86)

要从目录中删除所有文件,首先需要使用fs.readdir列出目录中的所有文件,然后您可以使用fs.unlink删除每个文件。另外fs.readdir将仅提供文件名,您需要与目录名称连接以获取完整路径。

这是一个例子

const fs = require('fs');
const path = require('path');

const directory = 'test';

fs.readdir(directory, (err, files) => {
  if (err) throw err;

  for (const file of files) {
    fs.unlink(path.join(directory, file), err => {
      if (err) throw err;
    });
  }
});

答案 1 :(得分:15)

有一个名为rimraf的包非常方便。它是节点的UNIX命令rm -rf。

尽管如此,它也可能过于强大,因为您可以使用它轻松删除文件夹。以下命令将删除文件夹中的文件。如果删除*,则会删除日志文件夹。

const rimraf = require('rimraf');
rimraf('./log/*', function () { console.log('done'); });

https://www.npmjs.com/package/rimraf

答案 2 :(得分:7)

在@ Waterscroll的响应的基础上,如果你想在节点8 +中使用async和await:

const fs = require('fs');
const util = require('util');
const readdir = util.promisify(fs.readdir);
const unlink = util.promisify(fs.unlink);
const directory = 'test';

async function toRun() {
  try {
    const files = await readdir(directory);
    const unlinkPromises = files.map(filename => unlink(`${directory}/${filename}`));
    return Promise.all(unlinkPromises);
  } catch(err) {
    console.log(err);
  }
}

toRun();

答案 3 :(得分:6)

是的,有一个模块fs-extra。此模块中有一种方法.emptyDir()用于完成任务。这是一个示例:

const fsExtra = require('fs-extra')

fsExtra.emptyDirSync(fileDir)

该模块也有一个异步版本。任何人都可以签出链接。

答案 4 :(得分:1)

如何运行命令行:

require('child_process').execSync('rm -rf /path/to/directory/*')

答案 5 :(得分:0)

?graph-fs


安装

npm i graph-fs

使用

const {Node} = require("graph-fs");
const directory = new Node("/path/to/directory");

directory.clear(); // <--