Avitus answerは正しいですが、それは.NET 2.0をで作業する必要があるので、あなたはEnumerateFiles
メソッドを使用することはできません、しかしGetFiles
はうまく仕事を取得します。しかし、もう少しコードが必要です。
例:
static void Main(string[] args)
{
processDirectory(@"c:\temp");
}
private static void processDirectory(string startLocation)
{
foreach (var directory in Directory.GetDirectories(startLocation))
{
processDirectory(directory);
if (Directory.GetDirectories(directory).Length == 0))
{
bool delete = false;
var files = Directory.GetFiles(directory);
// This will delete the directory if it contains a file with the Extension
// of .dvr, regardless if there are other files in there. Might be something you want to change.
for (int i = 0; i < files.Length && !delete; i++)
{
delete = files[i].Extension.Equals(".dvr", StringComparison.OrdinalIgnoreCase);
}
if (delete)
{
// Recursive must be set to true in order to
// delete files and sub-directories in the folder.
// This folder will not have any sub-directories
// so it's only used to delete the files.
Directory.Delete(directory, /*recursive*/ true);
}
}
}
}
あなたが望んでいた場合は、以下のコードの精神でfor
ループ内Directory.Delete
メソッド呼び出しを移動し、その後、ループを破ることができました。
あなたのソリューションは、いくつかの変更を加えれば最も効果的でした。 GTK#はany()を受け入れません。だから私は代わりに長さを使用しなければならなかった、それはうまく動作; D – Phiter