原子读写文件.如何将EOF设置在某个位置



我正在构建一个nodejs脚本。脚本流程如下:

  1. 打开带有r+标志的文件
  2. 然后读取打开的文件内容(使用fs.read)作为json。
  3. 运行用户回调,允许用户操作json(文件仍打开)
  4. 向文件中写入新对象
  5. 关闭

我的问题是我不知道如何在不关闭文件的情况下确定文件的新大小。

因此,例如,如果首先执行这段代码:

ffs.lockAndManipulateJSON(__dirname + '/var/meta.json', function (json) {
   json.test = 'ABC';
   json.foo = 'bar';
});

在未来的某个时刻:

ffs.lockAndManipulateJSON(__dirname + '/var/meta.json', function (json) {
   delete json.foo;
});

文件的内容如下:

{
    "test": "ABC"
}    "foo": "bar"
}

但我希望它是:

{
    "test": "ABC"
}

所以,我的问题是:如何在文件仍打开时使用nodejs设置新文件大小?

Ftruncate应该做您正在寻找的。编辑:*请注意,您需要打开文件"w+"才能工作。

最新更新