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
Lepaskan: 2025-01-26 19:06:11
asal
244 orang telah melayarinya

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).

var files = Directory.EnumerateFiles("C:\path", "*.*", SearchOption.AllDirectories)
    .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));
Salin selepas log masuk

Untuk versi terdahulu .NET:

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

var files = Directory.GetFiles("C:\path", "*.*", SearchOption.AllDirectories)
    .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));
Salin selepas log masuk

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 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