从他们的document阅读:
copy(source, destination)
目前,我处理此问题的方法是在复制前检查fs.exist('myfile')
并手动删除它:
var fs = require('fs');
var fileName = 'myfile-backup.txt';
if (fs.exists(fileName)) {
fs.remove(fileName);
}
fs.copy('myfile.txt', fileName);
phantom.exit();
我不知道是否有更好的方法来覆盖该文件。当我无法删除文件时,检查现有文件可能存在潜在问题。我可能需要使用这种方法进行更多的错误处理。这似乎是一项常见的任务,所以我想知道人们提出了什么解决方案。
答案 0 :(得分:0)
我已在fs
模块中写了small extension。如果您尝试使用fs.copy
覆盖文件,它将抛出一个异常,您可以捕获该异常来执行一些错误处理,例如删除现有文件。
如果每次在maxTrials
试用版和copy
之间存在创建文件的问题时,我还添加了一个可选的remove
参数。
var fs = require('fs');
fs.overwrite = function(source, destination, maxTrials){
var overwritten = false;
var trials = 0;
maxTrials = parseInt(maxTrials)
maxTrials = !!maxTrials ? maxTrials : null;
while(!overwritten) {
if (maxTrials && trials > maxTrials) {
return -1;
}
try {
this.copy(source, destination);
overwritten = true;
} catch(e) {
if (fs.exists(destination)) {
fs.remove(destination);
} else {
return -2;
}
}
trials++;
}
return trials;
};