重複の可能性:
Java でファイルの途中にバイトを書き込む最良の方法
バイトを書き込む必要があるファイルがあります。
特定のバイトを挿入する必要があるファイルの位置を知っています。明確にするために、既存のバイトを消去せずに、ファイルの途中にバイトを書き込む必要があります。操作全体でファイルの長さが増加するはずです。
そうするための最良の方法は何ですか?
重複の可能性:
Java でファイルの途中にバイトを書き込む最良の方法
バイトを書き込む必要があるファイルがあります。
特定のバイトを挿入する必要があるファイルの位置を知っています。明確にするために、既存のバイトを消去せずに、ファイルの途中にバイトを書き込む必要があります。操作全体でファイルの長さが増加するはずです。
そうするための最良の方法は何ですか?
これを行う唯一の方法は、現在邪魔になっているバイトを移動することです。これを行う頻度とファイルの大きさによっては、新しいファイルを作成し、既存のファイルをコピーして途中で新しいバイトを挿入することをお勧めします。
ファイルを頻繁に更新する必要がない場合、またはファイルが小さい場合 (最大 100 kb) は、RandomAccessFileを使用できます。
setLength()
メソッドによって返されるものに挿入するバイト数を追加しますlength()
。byte[]
、挿入ポイントから前のファイルの終わりまでのすべてのバイトを保持する を作成します。seek()
挿入ポイントの位置への呼び出しreadFully()
て一時配列を埋めますseek()
挿入ポイントの位置への呼び出し+ 挿入するバイト数write()
その時点でバッファを書き込むために呼び出しますseek()
挿入ポイントでの再配置の呼び出し手順 2 で十分な大きさの配列を作成できない場合は、手順 3 ~ 6 をループ内で小さいバッファーで実行する必要があります。効率のために、少なくとも 64k のバッファを使用します。