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
get のバイトは に置き換えられます0..5
)。
ただし、Linux では、5 バイトがファイルの末尾に追加されます。これは、NodeJS API リファレンスにも記載されています。
Linux では、ファイルが追加モードで開かれている場合、位置書き込みは機能しません。カーネルは位置引数を無視し、常にファイルの末尾にデータを追加します。
どうすればこれを回避できますか?