> 백엔드 개발 > C++ > Directory.GetFiles를 사용할 때 UnauthorizedAccessException을 어떻게 적절하게 처리할 수 있습니까?

Directory.GetFiles를 사용할 때 UnauthorizedAccessException을 어떻게 적절하게 처리할 수 있습니까?

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

How Can I Gracefully Handle UnauthorizedAccessException When Using Directory.GetFiles?

강력한 파일 검색: Directory.GetFiles에서 UnauthorizedAccessException 처리

파일 시스템 작업에서 종종 권한 문제가 발생하여 UnauthorizedAccessException을 사용할 때 Directory.GetFiles이 발생합니다. 이 예외는 일반적으로 액세스할 수 없는 단일 디렉터리가 발견되면 전체 프로세스를 중지합니다. 보다 강력한 솔루션은 디렉토리 액세스를 개별적으로 확인하는 것입니다.

아래에 자세히 설명된 이 개선된 접근 방식은 각 디렉터리를 반복하여 액세스 제한을 적절하게 처리할 수 있게 해줍니다.

선택적 파일 검색 솔루션

AddFiles 메서드는 디렉터리를 재귀적으로 처리합니다. 람다 표현식을 사용하여 목록에 파일 경로를 추가하고 액세스가 제한된 디렉터리는 무시합니다.

<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)
    {
        // Ignore access denied errors and continue processing other directories.
    }
}</code>
로그인 후 복사

이 수정된 방법은 UnauthorizedAccessException 블록 내의 try-catch 예외를 효율적으로 처리합니다. 프로그램은 계속 실행되어 충돌 없이 액세스 가능한 디렉터리에서 파일을 수집합니다. 이는 더 나은 제어를 제공하고 액세스 제한으로 인한 조기 종료를 방지합니다. foreach 루프를 사용하면 원래 ToList().ForEach() 접근 방식에 비해 가독성이 향상됩니다.

위 내용은 Directory.GetFiles를 사용할 때 UnauthorizedAccessException을 어떻게 적절하게 처리할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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