ホームページ > バックエンド開発 > C++ > Directory.Delete(path, true) が失敗するのはなぜですか? .NET 3.5 でディレクトリを再帰的に削除するにはどうすればよいですか?

Directory.Delete(path, true) が失敗するのはなぜですか? .NET 3.5 でディレクトリを再帰的に削除するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-13 17:17:43
オリジナル
926 人が閲覧しました

Why Does Directory.Delete(path, true) Fail, and How Can I Recursively Delete a Directory in .NET 3.5?

.NET 3.5 での再帰的なディレクトリ削除のトラブルシューティング

.NET 3.5 で Directory.Delete(path, true) を使用する場合の一般的なエラー「System.IO.IOException: ディレクトリが空ではありません」は誤解を招きます。 true パラメータは再帰的な削除を示しますが、ディレクトリ内のファイルは自動的に処理されません。

ディレクトリとその内容を再帰的に確実に削除するには、カスタム関数が必要です。

<code class="language-csharp">public static void DeleteDirectoryRecursively(string targetDir)
{
    string[] files = Directory.GetFiles(targetDir);
    string[] dirs = Directory.GetDirectories(targetDir);

    foreach (string file in files)
    {
        File.SetAttributes(file, FileAttributes.Normal); // Remove read-only attributes
        File.Delete(file);
    }

    foreach (string dir in dirs)
    {
        DeleteDirectoryRecursively(dir); // Recursive call for subdirectories
    }

    Directory.Delete(targetDir, false); // Delete the directory itself
}</code>
ログイン後にコピー

この改良された方法では、まずファイルから読み取り専用属性が削除され、次に各ファイルが個別に削除されます。 最終的にターゲット ディレクトリを削除する前に、それ自体を再帰的に呼び出して、ネストされたサブディレクトリを処理します。 これにより、完全かつエラーのない削除が保証されます。 システムで保護されたフォルダーを誤って削除しないように、アクセス制限を実装することをお勧めします。

以上がDirectory.Delete(path, true) が失敗するのはなぜですか? .NET 3.5 でディレクトリを再帰的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート