ディレクトリの再帰的削除中の「ディレクトリが空ではありません」例外について理解する
Directory.Delete( myPath、true)、ユーザーに「ディレクトリが空ではありません」というエラー メッセージが表示される場合があります。再帰的な引数がサブディレクトリも削除する必要があることを暗示していることを考えると、これは混乱を招く可能性があります。
このエラーの考えられる原因の 1 つは、ディレクトリ構造内に削除できないファイルが存在することです。これに対処するには、最初にサブディレクトリからすべてのファイルを削除し、次にすべてのサブディレクトリを削除し、最後にルート ディレクトリを削除する再帰関数を実装することをお勧めします。
削除プロセスを最適化するには、ファイルを削除する前にファイルから読み取り専用属性を削除することを検討してください。これにより、アクセス違反を防ぐことができます。以下は、再帰的ディレクトリ削除機能のサンプル実装です:
public static void DeleteDirectory(string target_dir) { string[] files = Directory.GetFiles(target_dir); string[] dirs = Directory.GetDirectories(target_dir); foreach (string file in files) { File.SetAttributes(file, FileAttributes.Normal); File.Delete(file); } foreach (string dir in dirs) { DeleteDirectory(dir); } Directory.Delete(target_dir, false); }
さらに、重要なシステム ディレクトリの誤った削除を防ぐための制限の実装を検討してください。
以上がDirectory.Delete(myPath, true) が「ディレクトリが空ではありません」というメッセージで失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。