Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Memproses Fail dengan Selamat dalam Struktur Direktori Semasa Mengabaikan Pengecualian Dinafikan Akses dalam C#?

Bagaimanakah Saya Boleh Memproses Fail dengan Selamat dalam Struktur Direktori Semasa Mengabaikan Pengecualian Dinafikan Akses dalam C#?

Linda Hamilton
Lepaskan: 2025-01-27 23:01:11
asal
643 orang telah melayarinya

How Can I Safely Process Files in a Directory Structure While Ignoring Access Denied Exceptions in C#?

Gunakan Directory.GetFiles() untuk melintasi direktori dengan selamat

Apabila merentasi direktori menggunakan C#, adalah perkara biasa untuk menghadapi pengecualian yang ditolak akses kerana folder yang dilindungi. Untuk mengelakkan pengecualian ini daripada mengganggu program anda, mari kita terokai cara mengabaikan direktori yang tidak boleh diakses dan terus memproses fail yang boleh diakses.

Cabaran

Kaedah standard menggunakan Directory.GetFiles() tiba-tiba akan membuang pengecualian apabila menemui folder yang tidak boleh diakses, menghentikan sebarang pemprosesan selanjutnya.

Penyelesaian rekursif

Daripada bergantung pada parameter AllDirectories, yang memberikan pengecualian, laksanakan rekursi secara manual. Ini melibatkan lelaran satu direktori pada satu masa, cuba mengakses failnya dan meneroka mana-mana subdirektori secara rekursif.

using System;
using System.IO;

public static class Program
{
    public static void Main()
    {
        string path = ""; // 获取目录路径
        ProcessAllFiles(path, ProcessFile);
    }

    private static void ProcessFile(string path) { /* 在此处添加文件处理代码。 */ }

    private static void ProcessAllFiles(string folder, Action<string> fileAction)
    {
        try
        {
            foreach (string file in Directory.GetFiles(folder))
            {
                fileAction(file);
            }

            foreach (string subDir in Directory.GetDirectories(folder))
            {
                ProcessAllFiles(subDir, fileAction);
            }
        }
        catch (Exception ex)
        {
            // 处理或忽略异常(例如,将其记录下来以便日后查看)。  考虑记录异常类型和路径信息。
            Console.WriteLine($"Error processing directory '{folder}': {ex.Message}");
        }
    }
}
Salin selepas log masuk

Kod ini meneroka struktur direktori secara berulang, mengabaikan folder yang tidak boleh diakses dan meneruskan dengan fail yang boleh diakses. Blok tangkapan boleh disesuaikan untuk menelan pengecualian atau melakukan pengendalian tersuai, seperti mengelognya. Kod yang dipertingkatkan termasuk blok try-catch untuk mengendalikan sebarang pengecualian yang mungkin berlaku dan mencetak mesej ralat termasuk mesej pengecualian dan laluan folder tempat ralat berlaku.

Kesimpulan

Dengan melaksanakan rekursi tersuai, kami boleh mengabaikan pengecualian akses yang ditolak dan terus mengakses fail dalam struktur direktori. Ini membolehkan pengendalian fail yang lebih mantap dan mesra pengguna, walaupun semasa berurusan dengan folder yang dilindungi atau tidak boleh diakses.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memproses Fail dengan Selamat dalam Struktur Direktori Semasa Mengabaikan Pengecualian Dinafikan Akses dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan