1
翻看fs文檔,我正在尋找一個可以與fs.appendFile一起使用的標誌,如果路徑確實存在而不是 。fs.appendFile但如果路徑不存在則失敗
我看到,涉及到提高的錯誤,如果路徑不存在的標誌,但我沒有看到國旗,如果路徑不會引發錯誤不會存在 -
https://nodejs.org/api/fs.html
翻看fs文檔,我正在尋找一個可以與fs.appendFile一起使用的標誌,如果路徑確實存在而不是 。fs.appendFile但如果路徑不存在則失敗
我看到,涉及到提高的錯誤,如果路徑不存在的標誌,但我沒有看到國旗,如果路徑不會引發錯誤不會存在 -
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()
之前就存在,但不建議,因爲競爭條件。相反,建議您在fs.open()
上設置正確的標誌,並讓該文件不存在時觸發錯誤。
謝謝是的我的意思是fs.appendFile,我編輯了原始問題 –