Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh mengambil pelbagai jenis fail menggunakan direktori.getFiles () atau enumerateFiles ()?

Bagaimanakah saya boleh mengambil pelbagai jenis fail menggunakan direktori.getFiles () atau enumerateFiles ()?

DDD
DDDasal
2025-01-26 19:21:10660semak imbas

How Can I Retrieve Multiple File Types Using Directory.GetFiles() or EnumerateFiles()?

Mengambil Fail Pelbagai Jenis dengan Cekap

Kaedah Directory.GetFiles(), walaupun nampak mudah, tidak secara langsung menyokong penapis jenis fail berbilang. Walau bagaimanapun, beberapa strategi berkesan wujud untuk mengatasi had ini.

Untuk versi .NET 4.0 dan yang lebih baru, kaedah EnumerateFiles() menawarkan penyelesaian unggul menggunakan klausa Where() LINQ:

<code class="language-csharp">var files = Directory.EnumerateFiles("C:\path", "*.*", SearchOption.AllDirectories)
            .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));</code>

Ini menapis fail terhitung dengan elegan berdasarkan sambungan yang ditentukan.

Untuk versi .NET yang lebih lama, pendekatan yang setanding boleh dilakukan:

<code class="language-csharp">var files = Directory.GetFiles("C:\path", "*.*", SearchOption.AllDirectories)
            .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));</code>

Walau bagaimanapun, adalah penting untuk diingat bahawa GetFiles() mengembalikan tatasusunan lengkap dalam ingatan. Ini boleh membawa kepada isu prestasi dan penggunaan memori yang tinggi, terutamanya apabila berurusan dengan direktori yang luas. Oleh itu, menggunakan EnumerateFiles() amat disyorkan untuk kecekapan optimum.

Atas ialah kandungan terperinci Bagaimanakah saya boleh mengambil pelbagai jenis fail menggunakan direktori.getFiles () atau enumerateFiles ()?. 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