2014-11-22 100 views
14

如何使用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

回答

26

要從目錄中刪除所有文件,首先需要使用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

0

有呼包rimraf這是非常方便的。它是節點的UNIX命令rm -rf。

不過,它也可能太強大了,因爲你可以很容易地使用它刪除文件夾。以下命令將刪除文件夾內的文件。如果您刪除*,您將刪除日誌文件夾。

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

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

相關問題