原子读写文件。如何在某个位置设置EOF?

时间:2013-04-24 10:12:08

标签: node.js filesystems fs

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

  1. 使用r + flag打开文件。
  2. 然后将已打开的文件内容(使用fs.read)读取为json。
  3. 运行用户回调以允许用户操作json(文件仍然打开)
  4. 将新对象写入文件。
  5. 关闭文件
  6. 我的问题是我不知道如何在不关闭文件的情况下确定文件的新大小。

    因此,例如,如果我们首先执行此代码:

    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设置新文件大小?

1 个答案:

答案 0 :(得分:1)

fs.ftruncate应该做你想要的。 编辑: *请注意,您需要打开文件“w +”才能使其正常工作。