> 백엔드 개발 > C++ > Directory.GetFiles를 사용하여 디렉터리를 탐색할 때 UnauthorizedAccessException을 어떻게 처리할 수 있습니까?

Directory.GetFiles를 사용하여 디렉터리를 탐색할 때 UnauthorizedAccessException을 어떻게 처리할 수 있습니까?

Mary-Kate Olsen
풀어 주다: 2025-01-07 15:06:44
원래의
851명이 탐색했습니다.

How Can I Handle UnauthorizedAccessException When Using Directory.GetFiles to Traverse Directories?

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

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