大量のファイルをディレクトリで検索していますか?
-
08-06-2019 - |
質問
私は MSVE を使用しており、独自のタイルを上にレイヤーで表示しています。問題は、それらが大量に存在し、ネットワーク サーバー上にあることです。特定のディレクトリには、30,000 以上のファイルが存在します。最初は Directory.GetFiles を呼び出しましたが、疑似実環境でテストを開始するとタイムアウトになってしまいました。
これほど多くのファイルをプログラムで一覧表示し、反復処理する最善の方法は何でしょうか?
編集:私の同僚は、MS インデックス サービスの使用を提案しました。誰かがこのアプローチを試したことがありますか、そしてそれは(どのように)うまくいきましたか?
解決
私は過去に SAN システムでテレフォニー音声録音を行ったことがありますが、そのときは 1 つのフォルダー内のファイル数に問題がありました。そのシステムは 5,000 近くになると使用できなくなりました (C#.Net 1.1 のアプリケーションを使用した Windows 2000 Advanced Server 上)。私たちが思いついた唯一の賢明な解決策は、より適切な数のファイルが存在するようにフォルダー構造を変更することでした。興味深いことに、Explorer もタイムアウトしてしまいます。
私たちが考え出した規則は、構造を年、月、日単位で分割する構造でした。ただし、それはシステムと、ディレクトリ構造を制御できるかどうかによって異なります。
他のヒント
必ず分割してください。ただし、インデックス サービスからはできるだけ遠ざけてください。
なし。.NET は基盤となる Windows API 呼び出しに依存していますが、この API 呼び出しは大量のファイル自体を非常に嫌います。
ロニーが言うように:それらを分割します。
DOSを使ってもいいですか?
DIR /s/b > Files.txt
自分でファイルのインデックスを作成するか、Google デスクトップや Google デスクトップなどのサードパーティのアプリを入手することも検討できます。 コペルニックな それを実行してからインデックスとインターフェイスします。copernic には、インデックス内の任意のファイルを検索するために使用できる API があり、ネットワーク ドライブのマッピングもサポートしていることは知っています。