我想创建一个文件foobar
。但是,如果用户已经有一个名为foobar
的文件,那么我不想覆盖他们的文件。所以我只想创建foobar
,如果它不存在的话。
起初,我认为我应该这样做:
fs.exists(filename, function(exists) {
if(exists) {
// Create file
}
else {
console.log("Refusing to overwrite existing", filename);
}
});
但是,查看fs.exists
的{{3}},其内容为:
fs.exists()是一种时代错误,只是出于历史原因而存在。 几乎没有理由在你自己的代码中使用它。
特别是,在打开文件之前检查文件是否存在是一个 让你容易受到竞争条件影响的反模式:另一种 进程可能会在调用fs.exists()和之间删除文件 fs.open()。只需打开文件并处理错误即可 那里。
fs.exists()将被弃用。
显然,节点开发人员认为我的方法是个坏主意。另外,我不想使用将被弃用的函数。
如何在不写现有文件的情况下创建文件?
答案 0 :(得分:16)
我认为答案是:
只需打开文件并处理错误即可。
尝试类似:
function createFile(filename) {
fs.open(filename,'r',function(err, fd){
if (err) {
fs.writeFile(filename, '', function(err) {
if(err) {
console.log(err);
}
console.log("The file was saved!");
});
} else {
console.log("The file exists!");
}
});
}
答案 1 :(得分:5)
fs.closeSync(fs.openSync('/var/log/my.log', 'a'))
答案 2 :(得分:1)
import { promises as fs } from "fs";
fs.readFile(path).catch(() =>
fs.writeFile(path, content);
);
答案 3 :(得分:0)
如果您想稍后将数据写入此文件,可以使用fs.appendFile('message.txt', 'data to append', 'utf8', callback);
。
将数据异步附加到文件,创建文件(如果该文件尚不存在)。数据可以是字符串或缓冲区。