如何在不使用Node.js删除目录的情况下从目录中删除所有文件?
我想删除临时文件。我对文件系统没有任何好处。
我找到了this方法,它将删除文件和目录。在那里,像/path/to/directory/*
这样的东西不会起作用。
我真的不知道应该使用哪些命令。谢谢你的帮助。
答案 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'); });
答案 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)
安装
npm i graph-fs
使用
const {Node} = require("graph-fs");
const directory = new Node("/path/to/directory");
directory.clear(); // <--