Directory.GetFiles가 디렉터리를 탐색할 때 발생하는 UnauthorizedAccessException 예외를 우아하게 처리합니다.
파일 및 디렉터리 작업을 수행할 때 Directory.GetFiles
메서드를 사용하면 UnauthorizedAccessException
예외가 발생할 수 있습니다. 이 예외는 사용자에게 적절한 권한이 없는 디렉터리에 메서드가 액세스하려고 시도할 때 발생합니다.
이 문제를 해결하려면 전체 디렉토리 트리를 순회하는 대신 디렉토리를 하나씩 탐색하는 것이 좋습니다. 이 접근 방식을 사용하면 작업을 보다 세밀하게 제어할 수 있습니다. 다음 코드는 향상된 접근 방식을 보여줍니다.
<code class="language-csharp">private static void AddFiles(string path, IList<string> files) { try { foreach (string file in Directory.GetFiles(path)) { files.Add(file); } foreach (string subdirectory in Directory.GetDirectories(path)) { AddFiles(subdirectory, files); } } catch (UnauthorizedAccessException ex) { // 忽略此目录的访问权限错误,继续处理其他目录 } }</code>
이 방법에서는 UnauthorizedAccessException
이 정상적으로 캡처 및 처리되므로 프로그램이 계속 실행되고 액세스 가능한 다른 파일을 찾을 수 있습니다. 반복은 디렉터리 계층 구조를 통해 계속되며 하위 디렉터리를 탐색하기 위해 자신을 재귀적으로 호출합니다.
이 기술을 사용하면 Directory.GetFiles
액세스 거부 오류로 인한 메소드 종료를 방지하고 디렉터리 순회 프로세스에 대한 제어를 유지할 수 있습니다. 이 방법은 foreach
대신 ToList().ForEach()
루프를 사용하여 더 읽기 쉽고 효율적입니다.
위 내용은 Directory.GetFiles를 사용하여 디렉터리를 탐색할 때 UnauthorizedAccessException을 어떻게 처리할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!