我正在使用appendFile方法将内容追加到文件中。下面是该代码的简化版本。它足以解释问题。我的问题是,如果进程被杀死,文件的内容会滞后于通过appendFile写入的最后数据。换句话说,所有传递到fs.appendFile以获得追加的数据不会写入磁盘。如何绕过此限制?我不喜欢使用任何fs方法的sync版本
fs = require('fs');
myVal = 1;
setInterval (function() {
++myVal;
fs.appendFile("/tmp/test.d", myVal +":",'utf8', function(err) {
console.log(myVal);
});
}, 10000);
字符串
~
2条答案
按热度按时间uinbv5nw1#
你不能在调用本身中这样做,但是你当然可以调用
fs.fdatasync()
来刷新之前对磁盘的写入。要做到这一点,你必须改变appendFile
调用,使用之前打开的文件描述符而不是字符串文件名,所以你最终会有三个步骤:字符串
确保在完成后关闭文件。就我个人而言,当
appendFileSync
这样一个简单而明显的选项存在时,我质疑这种方法的价值。它会使程序更难理解,实际上没有增加任何价值。但会有用的。
e4yzc0pl2#
从版本21开始,Node现在支持“flush”参数。
像这样使用它:
字符串
请参阅使用文档了解更多信息。