2

我正在尝试使用 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 参考中也提到了这一点:

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

我该如何解决这个问题?

4

1 回答 1

3

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

于 2013-07-21T17:58:03.047 回答