3

これを行うための標準ツールがいくつかありますが、一部のユーザー (Windows) を支援する単純な GUI が必要です。ファイルを開くダイアログが表示され、処理するファイルが選択されます。

ファイルは XML ファイルになります。ファイルには (最初の数行以内に) 削除するか空白に置き換える必要があるテキスト文字列が含まれます (どちらでもかまいません)。

問題は、XML ファイルが数ギガバイトの大きさであるにもかかわらず、固定検索および置換文字列が最初の 4k 程度で発生することです。

検索文字列を上書きしてその場で保存する最良の方法は何ですか?

4

2 に答える 2

1

ここでは、ファイル全体のサイズが変わらないように明らかに空白に置き換えることが最善の選択です。それ以外の場合は、ファイル全体をストリーミングしてディスク上で更新する必要があります。

これが Unix 環境の場合mmap()、ファイルの先頭の適切な部分を RAM にマップするために使用することを検討し、それをその場で編集して完了します。

このスニペットは、Win32 に相当するCreateFileMapping()関数である関数の使用方法を示しています。

于 2009-04-07T10:38:30.227 に答える
0

独自のツールを簡単に作成できます。それが最初の段階にある場合は、あらゆる力ずくのアプローチが機能します。見つかるまでスキャンを続けてください。

ただし、大量のディスク書き込みを回避できるのは、ファイル サイズを変更しない場合のみです。途中のバイトを削除または挿入したい場合は、その後に続くすべてを上書きする必要があります。あなたの場合、実質的にすべてのファイルになります。したがって、空白に置き換える必要があります。あるバイトを別のバイトに置き換えるだけであれば、オーバーヘッドはありません。

于 2009-04-07T10:36:10.013 に答える