2012-02-21 21 views
0

私は、BinaryReader/BinaryWriterの長さが1000バイトで、各レコードは50バイトです。 350から550までのレコードを削除するにはどうすればいいですか?最後に残りの800バイトをファイルに保存しますか?バイナリファイルからデータを削除する

+0

最も簡単なのは、最初の7件のレコードを読んで保存するだけです。残りの4件を読んで最後に読んで保存してください...? –

答えて

2

最も簡単な方法は、レコードをループして1つのファイルから読み込んで新しいファイルに書き込んだり、必要のないレコードを削除したりすることです。

理論上、と同じファイル内で新しいデータで上書きすることができますが、私は個人的に可能な限り単純なアプローチをとっています。つまり、何らかのレコードが2回含まれている可能性があるファイルではなく、元のファイルと削除可能な「不良」ファイルがまだ残っています。

1

あなたはファイルの末尾に位置550からデータを読み、そしてあなたはその正確な操作を行う可能性のFileStreamを使用している場合は、位置350

でそれを記述する必要があります。 BinaryReaderとBinaryWriterを使用すると、ファイル内のすべてのデータを読み込み、保持したいデータを書き戻す必要があります。このような小さいファイルの場合は、すべてのデータをメモリに保存できますが、大きなファイルの場合は、一時ファイルに書き込み、完了したら元のファイルを置き換えます。

データを失うリスクを最小限に抑えるために、一時ファイルに書き込むこともよいでしょう。操作の途中で何か問題が発生した場合は、少なくとも1つの元のファイルがディスクに残ります。

関連する問題