fs.appendFile,但如果path不存在,则失败

通过fs文档查看,我正在寻找一个标志,我可以使用fs.appendFile,如果path不存在将引发错误。

如果path已经存在,我会看到与提升错误有关的标志,但是如果path不存在,则不会看到会引发错误的标志 –

https://nodejs.org/api/fs.html

首先,我假设你的意思是fs.appendFile() ,因为你引用的fs.append()不在fs模块中。

似乎没有打开文件的标志,如果该文件不存在,则会返回错误。 你可以自己写一个。 这里有一个一般的想法如何做到这一点:

 fs.appendToFileIfExist = function(file, data, encoding, callback) { // check for optional encoding argument if (typeof encoding === "function") { callback = encoding; encoding = 'utf8'; } // r+ opens file for reading and writing. Error occurs if the file does fs.open(file, 'r+', function(err, fd) { if (err) return callback(err); function done(err) { fs.close(fd, function(close_err) { fd = null; if (!err && close_err) { // if no error passed in and there was a close error, return that return callback(close_err); } else { // otherwise return error passed in callback(err); } }); } // file is open here, call done(err) when we're done to clean up open file // get length of file so we know how to append fs.fstat(fd, function(err, stats) { if (err) return done(err); // write data to the end of the file fs.write(fd, data, stats.size, encoding, function(err) { done(err); }); }); }); } 

当然,您可以在调用fs.appendFile()之前testing一下文件是否存在,但是由于竞争条件而不推荐这样做。 相反,build议您在fs.open()上设置正确的标志,并在文件不存在的情况下触发错误。