定位写入现有文件

我正在尝试使用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字节被replace为256..261 )。

然而,在Linux中,5个字节被附加到文件的末尾。 这也在NodeJS API Reference中提到 :

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

我如何解决这个问题?

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