Làm thế nào để lặp lại tất cả các tệp trong một thư mục trong c # .net?


121

Tôi muốn lấy các tệp trong thư mục và cả trong các thư mục con của nó. Đoạn mã sau không lấy được các tệp trong thư mục con của nó:

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

Bất cứ ai Xin vui lòng cho tôi biết làm thế nào để thực hiện điều này trong c # .net?


2
Tôi luôn thích phương pháp MSDN để thực hiện mọi việc. Ở cuối liên kết này, họ cung cấp một ví dụ đệ quy w / một chương trình console (C #).
Justin

1
@Panuvin - Lưu ý: Mã MSDN hơi nguy hiểm. Đối với nội dung thư mục và thư mục con rất lớn (nhiều tệp), bạn có thể nhận được một ngoại lệ StackOverflow (vì mã đệ quy)
Joezer

Câu trả lời:


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

Tham số cuối cùng đó ảnh hưởng đến chính xác những gì bạn đang đề cập đến. Đặt nó thành AllDirectories cho mọi tệp bao gồm trong các thư mục con và đặt nó thành TopDirectoryOnly nếu bạn chỉ muốn tìm kiếm trong thư mục đã cho chứ không phải thư mục con.

Tham khảo MDSN để biết thêm chi tiết: https://msdn.microsoft.com/en-us/library/ms143316(v=vs.110).aspx


5
Đây sẽ là vòng lặp vô hạn nếu có một vòng lặp trong cấu trúc thư mục của bạn. Xem msdn.microsoft.com/en-us/library/ms143448.aspx
Anthony Wieser

Mục đích của tham số giữa là gì?
hữu íchBee

2
Nó được gọi là searchPattern và nó là một bộ lọc mà các tệp được chọn. Trong trường hợp này, nó sẽ chọn tất cả các tệp kết thúc bằng "ProfileHandler.cs". Hãy xem MDSN
Migwell

3

thử mã bên dưới

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.