Bagaimana cara mengulang semua file dalam direktori di c # .net?

121

Saya ingin mendapatkan file di folder dan juga di subfoldernya Kode berikut tidak mendapatkan file di subfoldernya:

string[] files = Directory.GetFiles(txtFolderPath.Text, "*ProfileHandler.cs");

Can anyone Tolong beritahu saya bagaimana menerapkan ini di c # .net?

Prem
sumber
2
Saya selalu lebih suka metode MSDN dalam melakukan sesuatu. Di bagian bawah tautan ini mereka memberikan contoh rekursif dengan program konsol (C #).
Justin
1
@ Panuvin - Catatan: Kode MSDN sedikit berbahaya. Untuk folder yang sangat besar dan konten subfolder (banyak banyak file) Anda bisa mendapatkan pengecualian StackOverflow (karena kode rekursif)
Joezer

Jawaban:

216
string[] files = 
    Directory.GetFiles(txtPath.Text, "*ProfileHandler.cs", SearchOption.AllDirectories);

Parameter terakhir itu mempengaruhi persis apa yang Anda maksud. Setel ke AllDirectories untuk setiap file termasuk di subfolder, dan setel ke TopDirectoryOnly jika Anda hanya ingin mencari di direktori yang diberikan dan bukan subfolder.

Lihat MDSN untuk detailnya: https://msdn.microsoft.com/en-us/library/ms143316(v=vs.110).aspx

Migwell
sumber
5
Ini akan menjadi loop tak terbatas jika ada loop dalam struktur folder Anda. Lihat msdn.microsoft.com/en-us/library/ms143448.aspx
Anthony Wieser
Apa tujuan dari parameter tengah?
usefulBee
2
Ini disebut searchPattern dan ini adalah filter yang digunakan untuk memilih file. Dalam hal ini akan memilih semua file yang diakhiri dengan "ProfileHandler.cs". Silakan
Migwell
3

coba kode di bawah ini

Directory.GetFiles(txtFolderPath.Text, "*ProfileHandler.cs",SearchOption.AllDirectories)
TalentTuner
sumber