จะวนซ้ำไฟล์ทั้งหมดในไดเร็กทอรีใน c # .net ได้อย่างไร?


121

ฉันต้องการรับไฟล์ในโฟลเดอร์และในโฟลเดอร์ย่อยด้วยรหัสต่อไปนี้ไม่ได้รับไฟล์ในโฟลเดอร์ย่อย:

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

ใครช่วยบอกวิธีใช้ใน c # .net ได้ไหม


2
ฉันชอบวิธีการ MSDN ในการทำสิ่งต่างๆมาโดยตลอด ที่ด้านล่างของลิงก์นี้จะมีตัวอย่างซ้ำพร้อมโปรแกรมคอนโซล (C #)
จัสติน

1
@Panuvin - หมายเหตุ: รหัส MSDN อันตรายเล็กน้อย สำหรับเนื้อหาโฟลเดอร์และโฟลเดอร์ย่อยที่มีขนาดใหญ่มาก (ไฟล์จำนวนมาก) คุณจะได้รับข้อยกเว้น StackOverflow (เนื่องจากรหัสเรียกซ้ำ)
Joezer

คำตอบ:


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

พารามิเตอร์สุดท้ายนั้นมีผลกับสิ่งที่คุณกำลังอ้างถึง ตั้งค่าเป็นAllDirectoriesสำหรับทุกไฟล์รวมทั้งในโฟลเดอร์ย่อยและตั้งค่าเป็นTopDirectoryOnlyหากคุณต้องการค้นหาในไดเร็กทอรีที่กำหนดเท่านั้นไม่ใช่โฟลเดอร์ย่อย

อ้างอิง MDSN สำหรับรายละเอียด: https://msdn.microsoft.com/en-us/library/ms143316(v=vs.110).aspx


5
สิ่งนี้จะวนซ้ำไม่สิ้นสุดหากมีการวนซ้ำในโครงสร้างโฟลเดอร์ของคุณ ดูmsdn.microsoft.com/en-us/library/ms143448.aspx
Anthony Wieser

วัตถุประสงค์ของพารามิเตอร์กลางคืออะไร?
ประโยชน์

2
เรียกว่า searchPattern และเป็นตัวกรองที่เลือกไฟล์ ในกรณีนี้ระบบจะเลือกไฟล์ทั้งหมดที่ลงท้ายด้วย "ProfileHandler.cs" ดูที่MDSN
Migwell


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.