多くのゼロを含むファイルがあり、要件に従って、ファイル内のゼロは無効です。ファイル内のデータを見つけるためにRandomAccessFile API を使用しています。同じAPIを使用してファイルからすべてのゼロを削除できる方法はありますか?
1102 次
2 に答える
4
ファイルをストリーミングし、ゼロを除いた内容を別の一時ファイルに書き出す必要があります。その後、元のファイルを閉じて削除し、新しいファイルの名前を古いファイル名に変更できます。これは、この特定のユース ケースの最良の代替手段です。
于 2014-03-24T10:53:25.223 に答える
0
RandomAccessFile を使用してファイルのデータを読み取ることができ、データを変更する必要があるポイントに到達すると、既存のバイト数を同じバイト数で上書きできます。新しい値が古い値とまったく同じ長さであるかどうかです。
RandomAccessFile を使用すると、サイズが 2 つの場合、変更される値と新しい値が異なる場合、難しく、同じように複雑になります。データを元に戻すには、多くのシーク、読み取り、書き込みが必要です
ファイル全体を読み取り、変更する必要があるビットを変更して、新しいファイルを書き込んでみてください。一度に 1 行ずつ処理するか、ファイル全体をメモリに読み込んで変更し、すべてを書き戻すことができます。次の方法で編集を実行することをお勧めします。
- ファイルを読む
- 一時ファイルに書き込む [バックアップするためだけに]
- 元の名前をバックアップに変更
- 一時ファイルで作業します。
- 成功した場合は、バックアップを削除します。
于 2014-03-24T11:12:00.110 に答える