5

私の例では、特定のフォルダーの下にあるフォルダーを削除しようとしています。このような私のフォルダ構造...C:\Export\MyDir1\MyDir2\MyDir3\MyDir4\MyDir5この構造は、その場で来ます。次回アプリケーションを実行すると、C:\Export\MyDir1ディレクトリがチェックされ、存在する場合は削除されます。私はこのように書いた

private static string getExportPath(string exportTargetPath, string parentIssue)
        {
            string exportPath = Path.Combine(exportTargetPath, parentIssue);
            if (Directory.Exists(exportPath))
            {
                string[] files = Directory.GetFiles(exportPath);
                string[] dirs = Directory.GetDirectories(exportTargetPath);

                File.SetAttributes(exportTargetPath, FileAttributes.Normal);
                Directory.Delete(exportTargetPath,false);
            }

            return exportPath;
        }

このシットに投稿された問題を確認しました。この問題 を試しましたが、解決策が得られません。この質問に対する推奨される回答によると、ディレクトリを反復しようとすると、無限ループになります。私はどこで間違いを犯しましたか?誰でも私を助けることができますか?

4

2 に答える 2

16

再帰的な削除を実行します。Directory.Delete(exportTargetPath, true);

MSDNは、次の場合にIOExceptionが発生することを具体的に示しています。

pathで指定されたディレクトリが読み取り専用であるか、再帰がfalseであり、pathが空のディレクトリではありません。

于 2012-05-30T12:13:23.313 に答える
5

Directory.Deleteの2番目のパラメーターは、理由から「recursive」という名前が付けられています。それをtrueに設定してみてください。

于 2012-05-30T12:13:20.100 に答える