2011-01-22 5 views
0

フォルダパスを指定すると、すべてのファイルを取得せずに最後に変更したファイルを取得する方法はありますか? 特定の時間の後に更新されたフォルダをすばやく見つける必要があります。最後に変更されたファイルがその時間より前である場合は、フォルダを完全にスキップします。 私は、フォルダの最終更新時刻がファイルの1つが更新されたときに更新されないことに気づいたので、この方法は機能しません。すべてのファイルを列挙せずに最後に変更したファイルを取得

答えて

0

いいえ、これは検索のスピードアップのためにWindowsにインデックスが付いている理由です。 NTFSファイルシステムは、高速検索を考慮して設計されていませんでした。

いずれにしても、困難ではないファイルの変更を監視できます。あなたのプログラムがバックグラウンドで実行され、変更を監視できるようにすることができれば、これはうまくいくでしょう。過去の履歴が必要だった場合は、最初のスキャンを1回しか実行せずに、自分の階層を構築することができます。プログラムが常に実行されている限り、現在のスナップショットがあり、低速スキャンを実行する必要はありません。

また、ウィンドウ検索自体を使用してファイルを検索することもできます。インデックス作成が利用可能な場合、それはおそらくあなたが得るほど速いでしょう。

0

これを試してください。

DirectoryInfo di = new DirectoryInfo("strPath"); 
DateTime dt = di.LastWriteTime; 

次に、あなたは

Directory.EnumerateFiles(strPath, "*.*", SearchOption.TopDirectoryOnly); 

次にループに上記のコレクションを使用してファイルごとに()のFileInfoを取得する必要があります。

ファイルのFileInfo()への参照を持たずに、ファイルの変更日時を取得する方法が表示されません。

私が知る限り、FileInfoがこのファイルを取得するとは思いません。

関連する問題