1

元々、RandomAccessFileを作成したときに、いくつかのバイトをスキップしてnullのままにしましたが、今は書き込んだバイトのいくつかを削除する必要があります。現在、場所をスペースで上書きしていますが、空に戻す方法はありますか?

編集:値が含まれている必要があるため、スキップしたときにデフォルトで割り当てられている元の値に戻す方法を知りたいです。

4

2 に答える 2

2

ファイルに「空の」バイトを含めることはできません。ファイルの各バイトの値は0〜255である必要があります。

特定のポイント以降のすべてのバイトを「消去」する場合はRandomAccessFile.setLength、ファイルを切り捨てるを使用できます。


コメントについて:一部のバイトを元の値に戻したい場合はRandomAccessFile、インデックスから元のバイト値へのマップを使用して独自のクラスにカプセル化することをお勧めします。これは、の呼び出しごとに更新されますwrite。このサブクラスは、マップ内の元の値を検索することによりrestore(int i)、インデックスでバイトの値を復元するメソッドを提供できます。i

于 2010-12-10T07:46:33.850 に答える
1

何をしようとしているのかは非常に不明ですが、ファイルの先頭または途中からバイトを「削除」することはできません。通常、ファイルを切り詰めることはできますが、途中からビットを削除することはできません。通常、新しいファイルを作成し、必要なデータのみをコピーしてから、ファイルの名前を適切に変更します。

于 2010-12-10T07:51:37.133 に答える