ファイルの一部を削除するには?

解決


恭二  2006-06-04 10:31:19  No: 62046

現在、ファイル操作を行うアプリケーションを作成しています。

CreateFile関数にてファイルをオープンし、読み書きを行っているのですが
開いたファイルの中の、一部分のみを削除するということは可能でしょうか?
先頭/カレント/末尾を始点にnバイト〜mバイトを削除みたいな感じで…。
(もしくはそういった処理を行うAPIなどが存在するでしょうか?)

大まかな処理としては、
1.データを読み込む
2−1.処理すべきデータであれば、ファイルから一度削除する
2−2.処理すべきデータでなければ、ファイルポインタを進めて1へ
3.データを処理する
4.ファイルの先頭に追加書き込みする
という流れにしたいと思っています。

ファイルを全部読み込んでしまい、削除してから書き込む方法も考えたのですが、ファイルサイズが少し大きいため(100KBちょいくらい)メモリを一時的にですが大量に使うのでどうかなぁ?と思ってます。
(ファイルを小さい単位に分割して保存すればいいのかもしれませんが、現在のシステムでは少し難しいです。システムを考え直せば可能ですがorz)

メモリをあまり使わないように、逐一読み込んで該当部分以外なら別ファイルに出力、すべて読み終わったら元ファイルを置換えなんていう面倒な方法も考えたのですが、何かすっきりしません。

システムの変更以外で何か良い方法はないものでしょうか?


Ban  2006-06-04 13:38:26  No: 62047

基本的に簡単な処理方法ってのはないので、書かれているような処理しかないかと。
システムを再設計するなり、オンメモリで処理するなり、
別ファイルに書いておいて置換なり…。
面倒といわれればそれまでですが、多分それが正攻法です。


恭二  2006-06-04 18:09:41  No: 62048

返事ありがとうございます。

なるほど、やはりそういう処理はありませんか…。
仕方がないので、システムを見直しますorz

どうもありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加