渡すディレクトリ内のファイルに特定の拡張子があるかどうかを確認したい。
public static bool ProcessDirectory(string targetDirectory)
{
// Process the list of files found in the directory.
string[] fileEntries = System.IO.Directory.GetFiles(targetDirectory);
foreach (string fileName in fileEntries)
if (System.IO.Path.GetExtension(fileName).ToLower().Contains(pattern))
return true;
// Recurse into subdirectories of this directory.
string[] subdirectoryEntries = System.IO.Directory.GetDirectories(targetDirectory);
foreach (string subdirectory in subdirectoryEntries)
return ProcessDirectory(subdirectory);
return false;
}
から電話する:
bool foundPattern = false;
//recursive search - based on search pattern
if (System.IO.File.Exists(myDirectory) && System.IO.Path.GetExtension(myDirectory).Contains(pattern))
{
// This path is a file
foundPattern = true;
}
else if (System.IO.Directory.Exists(myDirectory))
{
// This path is a directory
foundPattern = ProcessDirectory(myDirectory);
}
問題は、いくつかの結果が得られないことです (拡張子 .xzz のファイルがある場合でも、検索パターンで拡張子 .x を要求すると仮定すると、false になります。true になることもあれば、false になることもあります)。
ステップスルーすると、ディレクトリを見て、再帰的にそれらに入り、ファイルを調べているように見えます...
しかし、そうではありません。