我想删除目录中出现的文件,作为运行这段代码的副作用。我尝试了以下方法,但它不起作用,因为当我检查是否有任何扩展名为.csv的文件时,它们仍然存在。我使用以下链接作为模板
http://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback
我的代码是:
process.on('exit', function()
{
var child = exec('~/.ssh/project' + 'rm *.csv',
function (error, stdout, stderr)
{
if (error !== null || stderr.length > 0)
{
console.log(stderr);
console.log('exec error: ' + error);
proces.exit();
}
});
});
但这不起作用,因为此目录中仍有csv文件
答案 0 :(得分:0)
正如thefourtheye提到的“异步回调在exit
事件中不起作用”。因此,您必须做的任何事情都必须同步。在这种情况下,您有两种选择:
execSync
。这样做的好处是它可以避免很多复杂性,而且很多文件可能更快(由于并发):process.on('exit', () =>
execSync('~/.ssh/project rm *.csv');
);
fs.readdirSync
和fs.unlinkSync
。最初thefourtheye在他的deleted answer中写了它。如果有一个或几个文件,这可能会快一点,因为它不涉及创建一个过程和许多其他事情。function getUserHome() {
return process.env[(process.platform==='win32')?'USERPROFILE':'HOME']+path.sep;
}
process.on('exit', () =>
fs.readdirSync(getUserHome() + ".ssh/project").forEach((fileName) => {
if (path.extname(fileName) === ".csv") {
fs.unlinkSync(fileName);
}
});
);