我正在尝试使用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参数,并始终将数据附加到文件的末尾。
我该如何解决这个问题?
答案 0 :(得分:2)
使用r+
而不是a
模式打开。 r+
是一种可移植的方式,表示您想要读取和/或写入文件中的任意位置,并且该文件应该已经存在。