2012-01-10 35 views
57

Bạn biết rằng trong linux thật dễ dàng nhưng tôi không thể chỉ hiểu cách thực hiện trong C# trên Windows. Tôi muốn xóa tất cả các tệp khớp với ký tự đại diện f*.txt. Làm thế nào để tôi đi về điều đó?Xóa nhiều tập tin với ký tự đại diện

Trả lời

117

Bạn có thể sử dụng DirectoryInfo.EnumerateFiles function:

var dir = new DirectoryInfo(directoryPath); 

foreach (var file in dir.EnumerateFiles("f*.txt")) { 
    file.Delete(); 
} 

(. Tất nhiên, có thể bạn sẽ muốn thêm xử lý lỗi)

8

Bạn có thể sử dụng phương thức Directory.GetFiles với quá tải ký tự đại diện. Điều này sẽ trả về tất cả các tên tệp phù hợp với mẫu của bạn. Sau đó, bạn có thể xóa các tệp này.

33

Tôi biết điều này đã được trả lời và có một câu trả lời tốt, nhưng có một thay thế trong .NET 4.0 và cao hơn. Sử dụng Directory.EnumerateFiles(), như sau:

foreach (string f in Directory.EnumerateFiles(myDirectory,"f*.txt")) 
{ 
    File.Delete(f); 
} 

Những bất lợi của DirectoryInfo.GetFiles() là nó trả về một danh sách các tập tin - trong đó 99,9% thời gian là rất tốt. Điểm bất lợi là nếu thư mục chứa hàng chục nghìn tệp (hiếm khi xảy ra) thì nó trở nên rất chậm và liệt kê thông qua các tệp phù hợp nhanh hơn nhiều.

+2

Lưu ý rằng 'DirectoryInfo' cũng có' EnumerateFiles() '. – TrueWill

+3

Trong trường hợp bất cứ ai đang tự hỏi tại sao câu trả lời này là như vậy tương tự như câu trả lời được chấp nhận, đó là bởi vì câu trả lời chấp nhận đã được viết lại trong ánh sáng này. Đó là một sự xấu hổ vì sử dụng 'DirectoryInfo.GetFiles()' (đó là câu trả lời gốc) là cách duy nhất để làm điều đó cho các phiên bản trước của .NET. –

Các vấn đề liên quan