DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ファイル検索について

環境/言語:[C#]
分類:[.NET]

下記のテキストファイルを検索することについて質問です。

90万個くらいのファイルを処理しようとすると、さすがに時間がかかってフリーズしてしまうのですが、
なにか高速化、進行をプログレスバーにして表示する方法はないでしょうか。

よろしくお願いいたします。C#です。

// 検索
string[] Str=
(string[])Directory.GetFiles(Text, "*.txt", SearchOption.AllDirectories);
> 90万個くらいのファイルを処理しようとすると、さすがに時間がかかってフリーズしてしまうのですが、
> なにか高速化、進行をプログレスバーにして表示する方法はないでしょうか。

  似たことやったころありますが・・・
  インデックスサービス使って、ファイル一覧をカタログ化し
  DBのように扱う・・・

  http://support.microsoft.com/default.aspx?scid=kb;ja;820105

  初回はカタログ作成にかなりの時間を要すると思いますヨ!

※ それ以前にファイル名管理を小さいDBで管理するとか・・・

以上。参考まで
>オショウさん

お答えいただきありがとうございます!
なるほど、カタログ化ですか、考えて見ます。
ありがとうございました!
条件
@管理者権限がある
Aローカルディスク
なら該当するファイルシステムのメタテーブルを直接読みに行って下さい

ネットワークドライブの場合
FindFirstFileEx()
NtOpenFile(),NtQueryDirectoryFile()
等をマルチスレッドで用いることです
できるなら、QUERY_PATH_INFORMATIONやTRANS2_FIND_FIRST2を
直接送ればもっと早いかもしれません

DOBON.NET | プログラミング道 | プログラミング掲示板