Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengabaikan Ralat Kebenaran Apabila Menggunakan Directory.GetFiles()?

Bagaimanakah Saya Boleh Mengabaikan Ralat Kebenaran Apabila Menggunakan Directory.GetFiles()?

DDD
DDDasal
2025-01-27 23:06:10842semak imbas

How Can I Ignore Permission Errors When Using Directory.GetFiles()?

Kebenaran folder fail dan fail dalam direktori.getfiles () dengan elegan mengendalikan masalah fail dan fail folder fail

Apabila menggunakan fail dalam direktori penghitungan , jika folder atau fail yang dilindungi ditemui, halangan boleh ditemui. Ini boleh menyebabkan proses senarai fail berhenti tiba -tiba kerana keabnormalan. Walau bagaimanapun, jika anda ingin mengabaikan barang -barang terhad ini dengan elegan dan terus melintasi fail yang boleh diakses, apa yang perlu saya lakukan?

Kuncinya adalah untuk meninggalkan parameter Directory.GetFiles() dan proses rekursi secara manual. Anda boleh mengawal proses dengan lebih berhati -hati dengan memeriksa setiap subdirektori.

sila pertimbangkan serpihan kod berikut: AllDirectories

Dalam kod ini, kami menggunakan Suruhanjaya (

) untuk menentukan operasi setiap fail yang dijumpai.
<code class="language-csharp">using System;
using System.IO;

static class Program
{
    static void Main()
    {
        string path = ""; // TODO
        ApplyAllFiles(path, ProcessFile);
    }
    static void ProcessFile(string path) {/* ... */}
    static void ApplyAllFiles(string folder, Action<string> fileAction)
    {
        try
        {
            foreach (string file in Directory.GetFiles(folder))
            {
                fileAction(file);
            }
        }
        catch (UnauthorizedAccessException)
        {
            // 处理异常
        }
        catch (Exception ex)
        {
            // 处理其他异常
        }

        foreach (string subDir in Directory.GetDirectories(folder))
        {
            try
            {
                ApplyAllFiles(subDir, fileAction);
            }
            catch (UnauthorizedAccessException)
            {
                // 处理异常,例如记录错误信息或忽略
            }
            catch (Exception ex)
            {
                // 处理其他潜在异常
            }
        }
    }
}</code>
meneroka direktori secara rekursif, menangkap mana -mana

dan meneruskan penerokaannya. Action<string> ApplyAllFiles() Melalui rekursif pengurusan manual, anda boleh memintas folder atau fail yang tidak boleh digantikan dengan berkesan untuk memastikan item yang diberi kuasa hanya diproses tanpa mengganggu operasi senarai fail anda. Kod yang lebih baik juga diproses untuk memastikan program yang lebih mantap. UnauthorizedAccessException

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengabaikan Ralat Kebenaran Apabila Menggunakan Directory.GetFiles()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn