定位写入现有文件
我正在尝试使用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+
是一种可移植的方式来表示您要读取和/或写入文件中的任意位置,并且文件应该已经存在。