首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使fs.appendFile方法的Node.js立即刷新到磁盘?

如何使fs.appendFile方法的Node.js立即刷新到磁盘?
EN

Stack Overflow用户
提问于 2017-02-16 15:00:02
回答 1查看 5.3K关注 0票数 6

我使用appendFile方法将内容附加到文件中。以下是该代码的过度简化版本.解释这个问题就足够了。我的问题是,如果进程被终止,文件的内容将滞后于通过appendFile编写的最后一次数据。换句话说,传递给fs.appendFile的所有数据都不会被写入磁盘。如何克服这一限制?我不喜欢使用任何fs方法的同步版本。

代码语言:javascript
复制
  fs = require('fs');
  myVal       = 1;

  setInterval (function() {
   ++myVal;
    fs.appendFile("/tmp/test.d", myVal +":",'utf8', function(err) {
       console.log(myVal);
    });
  }, 10000);

~

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-16 16:07:18

您不能在调用本身中这样做,但是您当然可以调用fs.fdatasync()来刷新上一次对磁盘的写入。为此,必须将appendFile调用更改为使用以前打开的文件描述符,而不是字符串文件名,因此最后将执行三个步骤:

代码语言:javascript
复制
// Open the file
fs.open(filename, "a+",(err, fd) => {
    // Write our data
    fs.writeFile(fd, data, (err) => {
        // Force the file to be flushed
        fs.fdatasync(fd /*, optional callback here */);
    });
});

完成文件后,请确保关闭该文件。就我个人而言,当appendFileSync这样一个简单而明显的选项正是为此目的存在时,我怀疑这种方法的价值。它将使程序更难理解,而不实际增加任何价值。

但它会成功的。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42277513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档