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

问题描述:

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

我找到了this方法,它将删除文件和目录。在那,像/path/to/directory/*这样的东西将无法正常工作。

我真的不知道应该使用什么命令。谢谢您的帮助。

+2

如果你想使用通配符,请https://www.npmjs.org/package/glob。 – 2014-11-22 01:03:44

+1

只是查看API,它有什么难的?您必须将文件放入目录中,然后删除它们。 – Sikorski 2014-11-22 01:05:52

+1

Glob完成了工作,谢谢! – youbetternot 2014-11-22 01:14:08

要从目录中删除所有文件,首先需要使用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.com/package/rimraf