> 백엔드 개발 > C++ > Directory.Delete(path, true)가 실패하는 이유는 무엇이며 .NET 3.5에서 디렉터리를 재귀적으로 삭제할 수 있는 방법은 무엇입니까?

Directory.Delete(path, true)가 실패하는 이유는 무엇이며 .NET 3.5에서 디렉터리를 재귀적으로 삭제할 수 있는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2025-01-13 17:17:43
원래의
986명이 탐색했습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿