.NETでディレクトリスキャナを作成しています。.NETでディレクトリを再帰的にスキャンする方法はありますか?
各ファイル/ディレクトリについて、次の情報が必要です。
class Info {
public bool IsDirectory;
public string Path;
public DateTime ModifiedDate;
public DateTime CreatedDate;
}
私はこの機能を持っている:
static List<Info> RecursiveMovieFolderScan(string path){
var info = new List<Info>();
var dirInfo = new DirectoryInfo(path);
foreach (var dir in dirInfo.GetDirectories()) {
info.Add(new Info() {
IsDirectory = true,
CreatedDate = dir.CreationTimeUtc,
ModifiedDate = dir.LastWriteTimeUtc,
Path = dir.FullName
});
info.AddRange(RecursiveMovieFolderScan(dir.FullName));
}
foreach (var file in dirInfo.GetFiles()) {
info.Add(new Info()
{
IsDirectory = false,
CreatedDate = file.CreationTimeUtc,
ModifiedDate = file.LastWriteTimeUtc,
Path = file.FullName
});
}
return info;
}
は、この実装はかなり遅いですが判明。これをスピードアップする方法はありますか?私はFindFirstFileWでこれをコーディングすることを考えていますが、速い方法でビルドされた方法があればそれを避けたいと思います。
検索するファイル/ディレクトリの数はいくつですか?再帰の深さとは何ですか? –
かなり浅く、各ディレクトリに平均10個のファイルがある371個のディレクトリです。いくつかのディレクトリには他のサブディレクトリがあります –
P/Invokeのような感じです。あなたはまだスピードワーカーのスレッドを必要とする場合は助けることができます。 –