node.jsで複数のファイルを削除する最良の方法は何ですか?
function deleteFiles(files, callback){
...
}
var files = ['file1.js', 'file2.jpg', 'file3.css'];
deleteFiles(files, callback);
node.jsで複数のファイルを削除する最良の方法は何ですか?
function deleteFiles(files, callback){
...
}
var files = ['file1.js', 'file2.jpg', 'file3.css'];
deleteFiles(files, callback);
非同期:
var fs = require('fs');
function deleteFiles(files, callback){
var i = files.length;
files.forEach(function(filepath){
fs.unlink(filepath, function(err) {
i--;
if (err) {
callback(err);
return;
} else if (i <= 0) {
callback(null);
}
});
});
}
var files = ['file1.js', 'file2.jpg', 'file3.css'];
deleteFiles(files, function(err) {
if (err) {
console.log(err);
} else {
console.log('all files removed');
}
});
これにより、配列内のファイルが削除され、すべてのファイルが削除された後にのみコールバックが 1 回実行されます。
function deleteFiles(files, callback){
if (files.length==0) callback();
else {
var f = files.pop();
fs.unlink(f, function(err){
if (err) callback(err);
else {
console.log(f + ' deleted.');
deleteFiles(files, callback);
}
});
}
}
約束され、わずかに改善されたバージョンのクリスの回答。
async deleteAll(filePathsList) {
try {
await this.deleteFiles(filePathsList);
logger.log('info', "Following files deleted successfully from EFS --> " + filePathsList.toString());
return true;
} catch (error) {
logger.log('error', error.stack || error);
logger.log('error', "Error occured while deleting files from EFS");
return false;
}
}
async deleteFiles(files) {
return new Promise((resolve, reject) => {
let i = files.length;
files.forEach(function(filepath) {
fs.unlink(filepath, function(err) {
i--;
if (err && err.code == 'ENOENT') {
// file doens't exist
logger.log('info', "Following file doesn't exist, So won't be deleted-->" + (filepath || ''));
} else if (err) {
// other errors, e.g. maybe we don't have enough permission
logger.log('error', "Error occured while deleting the file " + (filepath || '') + " due to error" + err);
reject(err);
return;
} else if (i <= 0) {
resolve();
}
});
});
})
}