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..261get のバイトは に置き換えられます0..5)。

ただし、Linux では、5 バイトがファイルの末尾に追加されます。これは、NodeJS API リファレンスにも記載されています。

Linux では、ファイルが追加モードで開かれている場合、位置書き込みは機能しません。カーネルは位置引数を無視し、常にファイルの末尾にデータを追加します。

どうすればこれを回避できますか?

4

1 に答える 1

3

r+の代わりにのモードで開きますar+は、ファイル内の任意の位置に読み取りおよび/または書き込みを行いたいこと、およびファイルが既に存在している必要があることを示す移植可能な方法です。

于 2013-07-21T17:58:03.047 に答える