Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menggabungkan Berbilang Penapis Fail dalam Directory.GetFiles()?

Bagaimanakah Saya Boleh Menggabungkan Berbilang Penapis Fail dalam Directory.GetFiles()?

DDD
DDDasal
2025-01-26 19:06:11201semak imbas

How Can I Combine Multiple File Filters in Directory.GetFiles()?

Menggabungkan penapis fail dalam Directory.GetFiles()

Kaedah Directory.GetFiles() dalam .NET menyediakan cara yang mudah untuk mendapatkan semula senarai fail yang sepadan dengan penapis tertentu. Walau bagaimanapun, apabila cuba menapis berbilang jenis fail, tingkah laku lalai adalah untuk mengambil hanya fail yang sepadan dengan penapis pertama.

Walaupun mencuba kombinasi seperti ".mp3|.jpg" dan ".mp3;.jpg", tiada kaedah ini menangkap ini dalam satu panggilan Dua jenis fail. Untuk mengatasi had ini, pertimbangkan alternatif berikut:

Untuk .NET 4.0 dan ke atas:

Laksanakan pertanyaan LINQ untuk menapis hasil Directory.EnumerateFiles(), yang mendapatkan semula semua laluan fail dalam direktori. Pertanyaan menapis sambungan fail tertentu (.mp3 dan .jpg).

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

Untuk versi terdahulu .NET:

Gunakan kaedah Directory.GetFiles() untuk mendapatkan semula fail yang sepadan dengan sebarang sambungan (.) dan gunakan pertanyaan LINQ untuk menapis keputusan.

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

Nota: Sila pertimbangkan cadangan dalam ulasan tentang menggunakan fungsi StringContains dan bukannya fungsi EndsWith untuk mengoptimumkan prestasi. Selain itu, sila maklum tentang kemungkinan isu memori apabila menggunakan kaedah EnumerateFiles(), di mana had memori yang diperuntukkan mungkin melebihi jika objek asas tidak dikeluarkan terlebih dahulu.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan Berbilang Penapis Fail dalam 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