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