> 백엔드 개발 > C++ > `Directory.GetFiles` 사용 시 `UnauthorizedAccessException` 오류를 처리하는 방법은 무엇입니까?

`Directory.GetFiles` 사용 시 `UnauthorizedAccessException` 오류를 처리하는 방법은 무엇입니까?

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

How to Handle `UnauthorizedAccessException` Errors When Using `Directory.GetFiles`?

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)
    {
        // 以优雅的方式处理访问被拒绝的异常。
        // 可以记录问题或继续处理下一个目录。
        // 例如:Console.WriteLine($"Access denied to directory: {path}, Exception: {ex.Message}");
    }
}</code>
로그인 후 복사

디렉터리를 하나씩 조사하면 특정 폴더에 대한 액세스가 거부된 경우 전체 작업이 종료되는 것을 방지할 수 있습니다. 이를 통해 프로그램은 액세스 권한이 있는 디렉터리에서 파일을 계속 처리할 수 있습니다. 이 방법은 원래 예제보다 Directory.GetFiles 결과를 ​​더 명확하게 처리하고, 불필요한 ToList()ForEach() 호출을 피하고, 코드 효율성과 가독성을 향상시킵니다.

위 내용은 `Directory.GetFiles` 사용 시 `UnauthorizedAccessException` 오류를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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