1

ディレクトリ内の特定のフォルダーを検索する必要があります。

ファイルを探す必要はありません。ファイルを検索する必要はありません。

ディレクトリ内の特定のフォルダーを検索できますが、次のようなファイルのループに移動する必要があります

foreach (FileInfo f in dir.EnumerateFiles())
{
      //code
}
foreach (DirectoryInfo d in dir.EnumerateDirectories())
{
   Call function recursively
}

特定のフォルダのみを検索する必要があります。約 20,000 のファイルが非常に多いため、上記のコードを使用すると、ループよりもすべてのファイルが処理され、より多くの時間がかかります。

しかし、次のようなフォルダーがいくつか必要です

Regex.IsMatch(dir.FullName, @"1293.*T.*"))

ファイルループに入らずにそれを行うにはどうすればよいですか。

4

3 に答える 3

2

のオーバーロードによって提供される検索パターンがDirectory.GetDirectoryニーズに対して十分に強力でない場合は、カスタムメソッドを使用できます。

static string SearchDirectory(string path, string pattern)
{
    var regex = new Regex(pattern);
    foreach (var d in Directory.GetDirectories(path))
    {
        var dirName = d.Substring(d.LastIndexOf('\\') + 1);
        if (regex.IsMatch(dirName)) return d;
        SearchDirectory(d, pattern);
    }
    return null;
    //Or throw an Exception
}

foreachループをtry/catchブロックで囲むことをお勧めします。

于 2013-01-04T04:45:06.387 に答える
0

あなたの質問は非常に紛らわしいですが、正規表現パターンに一致するディレクトリを取得しますか?

foreach (DirectoryInfo d in dir.EnumerateDirectories().Where(d => Regex.IsMatch(dir.FullName, @"1293.*T.*")))
{

}
于 2013-01-04T04:46:21.250 に答える