0

この質問は何度も回答されています。

人々は、古いファイルのバイトを新しいファイルにコピーし、新しいバイトを挿入して、古いファイルから残りのバイトをコピーすることだけが唯一の方法であると言います。次に、古いファイルを削除し、新しいファイルの名前を変更します。

しかし、私の質問は、最高のテキスト/バイナリ エディターを適用しているテクニックに関連しています。非常に大きなバイナリ ファイル (480MB) を開いて、最初に HxD とメモ帳 ++ を使用して 4 バイトを追加すると、プログラムがファイル全体をコピーしているように見えます。これは、HDD で 100% のアクティビティが表示され、データ速度が書き込まれていることがわかるからです。 (~100MB/s で 3-4 秒の書き込み)。唯一の方法は、データを一時ファイルにコピーすることだと思いますか?

4

1 に答える 1

3

最後以外の場所でファイルにバイトを追加/ファイルから削除する唯一の方法は、それらのバイトの後に何かを書き直すことです。その場でそれを行うことができますが、新しいファイルが書き込まれるまで元のファイルは変更されないため、通常は一時ファイルを使用する方が簡単で安全です。

N バイトをその場で挿入するには、挿入したい位置から少なくとも N バイトを読み取る必要があります。次に、新しいバイトを書き込み、N バイトを上書きします。しかし、それらを読んだだけなので、書き戻すことができます。ただし、それは再び N バイトを上書きするため、最初にそれらを読み取る必要があります。ご覧のとおり、多くのシークが必要です。ファイルが大きすぎない場合は、残りのデータをすべてメモリに格納する方がはるかに簡単で高速です。大きなファイルの場合、通常、一時ファイルを使用してこの面倒を回避します。

于 2012-10-07T13:13:29.410 に答える