如果文件存在而不是覆盖它,我想让这段代码更改文件名.
var fileName = 'file'; fs.writeFile(fileName + '.txt', 'Random text', function (err) { if (err) throw err; console.log('It\'s saved!'); });
就像是:
var fileName = 'file', checkFileName = fileName, i = 0; while(fileExists(checkFileName + '.txt')) { i++; checkFileName = fileName + '-' + i; } // file-1, file-2, file-3... fileName = checkFileName; fs.writeFile(fileName + '.txt', 'Random text', function (err) { if (err) throw err; console.log('It\'s saved!'); });
我如何制作"fileExists"函数,考虑到fs.exists()
现在已弃用,fs.statSync()
或者fs.accessSync()
如果文件不存在则抛出错误.也许有更好的方法来实现这一目标?
使用writeFile
第三个参数设置为{flag: "wx"}
(有关标志的概述,请参见fs.open).这样,它在文件已经存在时失败,并且它还避免了在exists
和writeFile
调用之间创建文件的可能竞争条件.
在已存在的情况下以不同名称写入文件的示例代码.
fs = require('fs'); var filename = "test"; function writeFile() { fs.writeFile(filename, "some data", { flag: "wx" }, function(err) { if (err) { console.log("file " + filename + " already exists, testing next"); filename = filename + "0"; writeFile(); } else { console.log("Succesfully written " + filename); } }); } writeFile();