C# で特定のディレクトリを再帰的に削除するにはどうすればよいでしょうか? ファイルを含むディレクトリ。
すべきかSystem.IO.ディレクトリの削除2 番目のパラメータを使用するとtrue
うまくいきますか?
編集:
ということで、私は実際に自分の質問に答えましたが、ここでの回答はもう少し明確でした。そもそも私がこれを尋ねた理由は、まさにその呼び出しDelete
(2番目のパラメータを に設定true
)を持つコードが、本来行うべきことを実行していなかったからです。結局、その原因は、ディレクトリ階層のどこかに属性が設定されたファイルがありRO
、研磨のバージョンでは、Windows XP
そのため非常に奇妙なメッセージが表示されていました。
ベストアンサー1
サブディレクトリにもファイルが含まれている場合に私にとって機能する唯一の解決策は、再帰関数を使用することです。
public static void RecursiveDelete(DirectoryInfo baseDir)
{
if (!baseDir.Exists)
return;
foreach (var dir in baseDir.EnumerateDirectories())
{
RecursiveDelete(dir);
}
baseDir.Delete(true);
}
Directory.Delete(dir, true) は、現在のディレクトリのファイルと、サブディレクトリが空の場合はそのサブディレクトリのみを削除するようです。
誰かの役に立つことを願います。
ちなみに例:RecursiveDelete( new DirectoryInfo(@"C:\my_dir") );