如何不覆盖 node.js 中的文件
How to not overwrite file in node.js
我想让这段代码在文件存在时更改文件名而不是覆盖它。
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!');
});
考虑到 fs.exists()
现已弃用,如果文件不存在,fs.statSync()
或 fs.accessSync()
会抛出错误,我该如何使 "fileExists" 发挥作用。也许有更好的方法来实现这一目标?
使用 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();
我想让这段代码在文件存在时更改文件名而不是覆盖它。
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!');
});
考虑到 fs.exists()
现已弃用,如果文件不存在,fs.statSync()
或 fs.accessSync()
会抛出错误,我该如何使 "fileExists" 发挥作用。也许有更好的方法来实现这一目标?
使用 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();