0

txtファイルを編集するプログラムを書いています。

しかし、Windows API WriteFile はデータ/文字をファイルに追加できるだけで、ファイルからデータを削除できないことがわかりました。

私が思いついた唯一の解決策は、ReadFile を使用してファイル全体をバッファーに読み込み、ループを使用してデータを 1 つずつシフトし、古いファイルを新しいファイルに置き換えることです。しかし、これはおそらく私のプログラムを本当に遅くすると思います。

誰でも助けてください

ありがとう。

4

2 に答える 2

0

ファイルの最後から削除しようとしている場合は、 and を使用すると非常に高速にtruncate()なりftruncate()ます。

どこからデータを削除しようとしていますか? 途中からの場合は、次を使用する必要があります。fseek()ファイルに「ABCDEFG」が含まれていて、「DEF」を削除したい場合は、使用fseek()して G に移動し、「G」をバッファーにコピーしfseekて、「C」がある場所に移動します。 、そしてwrite()そこにあるもの。次に、ファイルを正しいサイズに切り詰めますftruncate()

これが実際にパフォーマンスの問題になる場合は、これを考慮してファイルを設計するか、何らかのデータベースを使用する必要があります。メモリ マップト ファイルを使用することもできますが、通常は、車輪を再発明するよりも、他の誰かが作成したデータベースを使用する方が適切です。

于 2013-06-01T19:33:38.537 に答える