5
我使用下面的代碼從TMP上傳目錄中刪除舊文件:正確的代碼的NodeJS從TMP上傳刪除舊文件夾
fs.readdir(dirPath, function(err, files) {
if (err) return console.log(err);
if (files.length > 0) {
files.forEach(function(file) {
var filePath = dirPath + file;
fs.stat(filePath, function(err, stat) {
if (err) return console.log(err);
var livesUntil = new Date();
livesUntil.setHours(livesUntil.getHours() - 1);
if (stat.ctime < livesUntil) {
fs.unlink(filePath, function(err) {
if (err) return console.log(err);
});
}
});
});
}
});
我運行一次一個小時。這在大多數情況下都有效。 但是我發現偶爾上傳會在上傳過程中意外消失。 我認爲發生了什麼事情是,這個代碼在stat.ctime被設置之前在一個文件實際上在上傳過程中運行 - 所以它在完成之前被刪除。 有關如何防止這種情況的任何建議?
謝謝!
您可以上傳到另一個目錄,當它完成移動文件。 – Florent
考慮命名你的匿名函數並在之後編寫這個序列。還要考慮你的邏輯分支。 'files.length> 0'不是必需的。一個好的經驗法則是將縮進視爲衡量不良的一個指標。你還應該考慮添加一些評論來幫助讀者。放縱垂直空間。 – qubyte