对现有文件的位置写入[Linux,NodeJS]

时间:2013-07-21 17:54:05

标签: node.js file-io

我正在尝试使用NodeJS编辑现有的二进制文件。

我的代码是这样的:

file = fs.createWriteStream("/path/to/existing/binary/file", {flags: "a"});
file.pos = 256;
file.write(new Buffer([0, 1, 2, 3, 4, 5]));

在OS X中,这可以按预期工作(256..261处的字节替换为0..5)。

然而,在linux中,5个字节被附加到文件末尾。 NodeJS API Reference

中也提到了这一点
  

在Linux上,在附加模式下打开文件时,位置写入不起作用。内核忽略position参数,并始终将数据附加到文件的末尾。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

使用r+而不是a模式打开。 r+是一种可移植的方式,表示您想要读取和/或写入文件中的任意位置,并且该文件应该已经存在。