如何在不删除Node.js中的目录的情况下从目录中删除所有文件
问题描述:
如何使用Node.js删除目录中的所有文件而不删除目录本身?
我想删除临时文件。我对文件系统没有任何好处。如何在不删除Node.js中的目录的情况下从目录中删除所有文件
我找到了this方法,它将删除文件和目录。在那,像/path/to/directory/*
这样的东西将无法正常工作。
我真的不知道应该使用什么命令。谢谢您的帮助。
答
要从目录中删除所有文件,首先需要使用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
这很好用,而且大多数已经有fs和路径需要,所以这是一个奖励,不需要额外的软件包。我刚刚换了'test'for path.join(__ dirname,'../../public/uploads') – russiansummer 2017-12-14 18:18:54
答
有呼包rimraf这是非常方便的。它是节点的UNIX命令rm -rf。
不过,它也可能太强大了,因为你可以很容易地使用它删除文件夹。以下命令将删除文件夹内的文件。如果您删除*,您将删除日志文件夹。
const rimraf = require('rimraf');
rimraf('./log/*', function() { console.log('done'); });
如果你想使用通配符,请https://www.npmjs.org/package/glob。 – 2014-11-22 01:03:44
只是查看API,它有什么难的?您必须将文件放入目录中,然后删除它们。 – Sikorski 2014-11-22 01:05:52
Glob完成了工作,谢谢! – youbetternot 2014-11-22 01:14:08