9

重複の可能性:
Java でファイルの途中にバイトを書き込む最良の方法

バイトを書き込む必要があるファイルがあります。

特定のバイトを挿入する必要があるファイルの位置を知っています。明確にするために、既存のバイトを消去せずに、ファイルの途中にバイトを書き込む必要があります。操作全体でファイルの長さが増加するはずです。

そうするための最良の方法は何ですか?

4

1 に答える 1

7

これを行う唯一の方法は、現在邪魔になっているバイトを移動することです。これを行う頻度とファイルの大きさによっては、新しいファイルを作成し、既存のファイルをコピーして途中で新しいバイトを挿入することをお勧めします。

ファイルを頻繁に更新する必要がない場合、またはファイルが小さい場合 (最大 100 kb) は、RandomAccessFileを使用できます。

  1. メソッドを使用してファイルを拡張し、setLength()メソッドによって返されるものに挿入するバイト数を追加しますlength()
  2. 十分なメモリがある場合はbyte[]、挿入ポイントから前のファイルの終わりまでのすべてのバイトを保持する を作成します。
  3. seek()挿入ポイントの位置への呼び出し
  4. 呼び出しreadFully()て一時配列を埋めます
  5. seek()挿入ポイントの位置への呼び出し+ 挿入するバイト数
  6. write()その時点でバッファを書き込むために呼び出します
  7. seek()挿入ポイントでの再配置の呼び出し
  8. `write() を呼び出して、新しいバイトを書き込みます

手順 2 で十分な大きさの配列を作成できない場合は、手順 3 ~ 6 をループ内で小さいバッファーで実行する必要があります。効率のために、少なくとも 64k のバッファを使用します。

于 2012-10-01T16:36:39.260 に答える