answer
466
Đối với .NET 4.0 trở lên,
var files = Directory.EnumerateFiles["C:\\path", "*.*", SearchOption.AllDirectories]
.Where[s => s.EndsWith[".mp3"] || s.EndsWith[".jpg"]];
Đối với các phiên bản trước của .NET,
var files = Directory.GetFiles["C:\\path", "*.*", SearchOption.AllDirectories]
.Where[s => s.EndsWith[".mp3"] || s.EndsWith[".jpg"]];
chỉnh sửa: Xin vui lòng đọc các ý kiến. Sự cải thiện mà Paul Farry gợi ý, và vấn đề về trí nhớ / hiệu suất mà Christian.K chỉ ra đều rất quan trọng. Xin vui lòng đọc các ý kiến. Sự cải thiện mà Paul Farry gợi ý, và vấn đề về trí nhớ / hiệu suất mà Christian.K chỉ ra đều rất quan trọng.
466 hữu ích 5 bình luận chia sẻ 5 bình luận chia sẻ
answer
52
Còn cái này thì sao:
private static string[] GetFiles[string sourceFolder, string filters, System.IO.SearchOption searchOption]
{
return filters.Split['|'].SelectMany[filter => System.IO.Directory.GetFiles[sourceFolder, filter, searchOption]].ToArray[];
}
Tôi tìm thấy nó ở đây [trong các ý kiến]: //msdn.microsoft.com/en-us/l Library / wz42302f.aspx//msdn.microsoft.com/en-us/l Library / wz42302f.aspx
52 hữu ích 5 bình luận chia sẻ 5 bình luận chia sẻ
answer
29
Nếu bạn có một danh sách lớn các tiện ích mở rộng để kiểm tra, bạn có thể sử dụng các mục sau. Tôi không muốn tạo ra nhiều câu lệnh OR vì vậy tôi đã sửa đổi những gì lette đã viết.Tôi không muốn tạo ra nhiều câu lệnh OR vì vậy tôi đã sửa đổi những gì lette đã viết.
string supportedExtensions = "*.jpg,*.gif,*.png,*.bmp,*.jpe,*.jpeg,*.wmf,*.emf,*.xbm,*.ico,*.eps,*.tif,*.tiff,*.g01,*.g02,*.g03,*.g04,*.g05,*.g06,*.g07,*.g08";
foreach [string imageFile in Directory.GetFiles[_tempDirectory, "*.*", SearchOption.AllDirectories].Where[s => supportedExtensions.Contains[Path.GetExtension[s].ToLower[]]]]
{
//do work here
}
29 hữu ích 5 bình luận chia sẻ 5 bình luận chia sẻ
answer
27
cho
var exts = new[] { "mp3", "jpg" };
Bạn có thể:
public IEnumerable FilterFiles[string path, params string[] exts] {
return
Directory
.EnumerateFiles[path, "*.*"]
.Where[file => exts.Any[x => file.EndsWith[x, StringComparison.OrdinalIgnoreCase]]];
}
- Đừng quên .NET4 mới
4để tăng hiệu suất [ Sự khác biệt giữa Directory.Enum CảFiles so với Directory.GetFiles là gì? ]string supportedExtensions = "*.jpg,*.gif,*.png,*.bmp,*.jpe,*.jpeg,*.wmf,*.emf,*.xbm,*.ico,*.eps,*.tif,*.tiff,*.g01,*.g02,*.g03,*.g04,*.g05,*.g06,*.g07,*.g08"; foreach [string imageFile in Directory.GetFiles[_tempDirectory, "*.*", SearchOption.AllDirectories].Where[s => supportedExtensions.Contains[Path.GetExtension[s].ToLower[]]]] { //do work here }
4để tăng hiệu suất [ Sự khác biệt giữa Directory.Enum CảFiles so với Directory.GetFiles là gì? ]string supportedExtensions = "*.jpg,*.gif,*.png,*.bmp,*.jpe,*.jpeg,*.wmf,*.emf,*.xbm,*.ico,*.eps,*.tif,*.tiff,*.g01,*.g02,*.g03,*.g04,*.g05,*.g06,*.g07,*.g08"; foreach [string imageFile in Directory.GetFiles[_tempDirectory, "*.*", SearchOption.AllDirectories].Where[s => supportedExtensions.Contains[Path.GetExtension[s].ToLower[]]]] { //do work here }
- "IgnoreCase" phải nhanh hơn "ToLower" [
5chứ không phảistring supportedExtensions = "*.jpg,*.gif,*.png,*.bmp,*.jpe,*.jpeg,*.wmf,*.emf,*.xbm,*.ico,*.eps,*.tif,*.tiff,*.g01,*.g02,*.g03,*.g04,*.g05,*.g06,*.g07,*.g08"; foreach [string imageFile in Directory.GetFiles[_tempDirectory, "*.*", SearchOption.AllDirectories].Where[s => supportedExtensions.Contains[Path.GetExtension[s].ToLower[]]]] { //do work here }
6]string supportedExtensions = "*.jpg,*.gif,*.png,*.bmp,*.jpe,*.jpeg,*.wmf,*.emf,*.xbm,*.ico,*.eps,*.tif,*.tiff,*.g01,*.g02,*.g03,*.g04,*.g05,*.g06,*.g07,*.g08"; foreach [string imageFile in Directory.GetFiles[_tempDirectory, "*.*", SearchOption.AllDirectories].Where[s => supportedExtensions.Contains[Path.GetExtension[s].ToLower[]]]] { //do work here }
5chứ không phảistring supportedExtensions = "*.jpg,*.gif,*.png,*.bmp,*.jpe,*.jpeg,*.wmf,*.emf,*.xbm,*.ico,*.eps,*.tif,*.tiff,*.g01,*.g02,*.g03,*.g04,*.g05,*.g06,*.g07,*.g08"; foreach [string imageFile in Directory.GetFiles[_tempDirectory, "*.*", SearchOption.AllDirectories].Where[s => supportedExtensions.Contains[Path.GetExtension[s].ToLower[]]]] { //do work here }
6]string supportedExtensions = "*.jpg,*.gif,*.png,*.bmp,*.jpe,*.jpeg,*.wmf,*.emf,*.xbm,*.ico,*.eps,*.tif,*.tiff,*.g01,*.g02,*.g03,*.g04,*.g05,*.g06,*.g07,*.g08"; foreach [string imageFile in Directory.GetFiles[_tempDirectory, "*.*", SearchOption.AllDirectories].Where[s => supportedExtensions.Contains[Path.GetExtension[s].ToLower[]]]] { //do work here }
Nhưng lợi ích thực sự của việc
7hiển thị khi bạn tách các bộ lọc và hợp nhất các kết quả:string supportedExtensions = "*.jpg,*.gif,*.png,*.bmp,*.jpe,*.jpeg,*.wmf,*.emf,*.xbm,*.ico,*.eps,*.tif,*.tiff,*.g01,*.g02,*.g03,*.g04,*.g05,*.g06,*.g07,*.g08";
foreach [string imageFile in Directory.GetFiles[_tempDirectory, "*.*", SearchOption.AllDirectories].Where[s => supportedExtensions.Contains[Path.GetExtension[s].ToLower[]]]]
{
//do work here
}
string supportedExtensions = "*.jpg,*.gif,*.png,*.bmp,*.jpe,*.jpeg,*.wmf,*.emf,*.xbm,*.ico,*.eps,*.tif,*.tiff,*.g01,*.g02,*.g03,*.g04,*.g05,*.g06,*.g07,*.g08";
foreach [string imageFile in Directory.GetFiles[_tempDirectory, "*.*", SearchOption.AllDirectories].Where[s => supportedExtensions.Contains[Path.GetExtension[s].ToLower[]]]]
{
//do work here
}
7hiển thị khi bạn tách các bộ lọc và hợp nhất các kết quả:public IEnumerable FilterFiles[string path, params string[] exts] {
return
exts.Select[x => "*." + x] // turn into globs
.SelectMany[x =>
Directory.EnumerateFiles[path, x]
];
}
Sẽ nhanh hơn một chút nếu bạn không phải biến chúng thành những khối u [tức là
8đã có].string supportedExtensions = "*.jpg,*.gif,*.png,*.bmp,*.jpe,*.jpeg,*.wmf,*.emf,*.xbm,*.ico,*.eps,*.tif,*.tiff,*.g01,*.g02,*.g03,*.g04,*.g05,*.g06,*.g07,*.g08";
foreach [string imageFile in Directory.GetFiles[_tempDirectory, "*.*", SearchOption.AllDirectories].Where[s => supportedExtensions.Contains[Path.GetExtension[s].ToLower[]]]]
{
//do work here
}
string supportedExtensions = "*.jpg,*.gif,*.png,*.bmp,*.jpe,*.jpeg,*.wmf,*.emf,*.xbm,*.ico,*.eps,*.tif,*.tiff,*.g01,*.g02,*.g03,*.g04,*.g05,*.g06,*.g07,*.g08";
foreach [string imageFile in Directory.GetFiles[_tempDirectory, "*.*", SearchOption.AllDirectories].Where[s => supportedExtensions.Contains[Path.GetExtension[s].ToLower[]]]]
{
//do work here
}
8đã có].Đánh giá hiệu suất dựa trên thử nghiệm LinqPad sau đây [lưu ý:
9chỉ cần lặp lại 10000 lần đại biểu] //gist.github.com/zaus/7454021string supportedExtensions = "*.jpg,*.gif,*.png,*.bmp,*.jpe,*.jpeg,*.wmf,*.emf,*.xbm,*.ico,*.eps,*.tif,*.tiff,*.g01,*.g02,*.g03,*.g04,*.g05,*.g06,*.g07,*.g08";
foreach [string imageFile in Directory.GetFiles[_tempDirectory, "*.*", SearchOption.AllDirectories].Where[s => supportedExtensions.Contains[Path.GetExtension[s].ToLower[]]]]
{
//do work here
}
string supportedExtensions = "*.jpg,*.gif,*.png,*.bmp,*.jpe,*.jpeg,*.wmf,*.emf,*.xbm,*.ico,*.eps,*.tif,*.tiff,*.g01,*.g02,*.g03,*.g04,*.g05,*.g06,*.g07,*.g08";
foreach [string imageFile in Directory.GetFiles[_tempDirectory, "*.*", SearchOption.AllDirectories].Where[s => supportedExtensions.Contains[Path.GetExtension[s].ToLower[]]]]
{
//do work here
}
9chỉ cần lặp lại 10000 lần đại biểu] //gist.github.com/zaus/7454021[đăng lại và mở rộng từ 'trùng lặp' vì câu hỏi đó đặc biệt yêu cầu không có LINQ: Nhiều phần mở rộng tệp tìm kiếm Mô hình cho System.IO.Directory.GetFiles ]Nhiều phần mở rộng tệp tìm kiếm Mô hình cho System.IO.Directory.GetFiles ]
27 hữu ích 5 bình luận chia sẻ 5 bình luận chia sẻ
answer
15
Tôi biết đó là câu hỏi cũ nhưng LINQ: [.NET40 +]
var files = Directory.GetFiles["path_to_files"].Where[file => Regex.IsMatch[file, @"^.+\.[wav|mp3|txt]$"]];
15 hữu ích 1 bình luận chia sẻ 1 bình luận chia sẻ
answer
11
Một cách khác để sử dụng Linq, nhưng không phải trả lại mọi thứ và lọc trên đó trong bộ nhớ.
var files = Directory.GetFiles["C:\\path", "*.mp3", SearchOption.AllDirectories].Union[Directory.GetFiles["C:\\path", "*.jpg", SearchOption.AllDirectories]];
Đó thực sự là 2 cuộc gọi
0, nhưng tôi nghĩ nó phù hợp với tinh thần của câu hỏi và trả lại chúng trong một số lượng lớn.var exts = new[] { "mp3", "jpg" };
var exts = new[] { "mp3", "jpg" };
0, nhưng tôi nghĩ nó phù hợp với tinh thần
của câu hỏi và trả lại chúng trong một số lượng lớn.11 hữu ích 2 bình luận chia sẻ 2 bình luận chia sẻ
answer
9
Ngoài ra còn có một giải pháp gốc mà dường như không có bất kỳ bộ nhớ hoặc hiệu năng nào và khá thanh lịch:
string[] filters = new[]{"*.jpg", "*.png", "*.gif"};
string[] filePaths = filters.SelectMany[f => Directory.GetFiles[basePath, f]].ToArray[];
9 hữu ích 2 bình luận chia sẻ 2 bình luận chia sẻ
answer
7
Không. Hãy thử như sau:Hãy thử như sau:
var files = Directory.GetFiles["C:\\path", "*.*", SearchOption.AllDirectories]
.Where[s => s.EndsWith[".mp3"] || s.EndsWith[".jpg"]];
0 Lấy từ: //bloss.msdn.com/markda/archive/2006/04/20/580075.aspx//bloss.msdn.com/markda/archive/2006/04/20/580075.aspx
7 hữu ích 0 bình luận chia sẻ 0 bình luận chia sẻ
answer
6
Để cho
var files = Directory.GetFiles["C:\\path", "*.*", SearchOption.AllDirectories]
.Where[s => s.EndsWith[".mp3"] || s.EndsWith[".jpg"]];
1Sau đó
var files = Directory.GetFiles["C:\\path", "*.*", SearchOption.AllDirectories]
.Where[s => s.EndsWith[".mp3"] || s.EndsWith[".jpg"]];
2hoặc là
var files = Directory.GetFiles["C:\\path", "*.*", SearchOption.AllDirectories]
.Where[s => s.EndsWith[".mp3"] || s.EndsWith[".jpg"]];
36 hữu ích 1 bình luận chia sẻ 1 bình luận chia sẻ
answer
5
Tôi không thể sử dụng
1phương pháp vì tôi đang lập trình trong .NET Framework 2.0 [Linq chỉ được hỗ trợ trong .NET Framework 3.5+].var exts = new[] { "mp3", "jpg" };
var exts = new[] { "mp3", "jpg" };
1phương pháp vì tôi đang lập trình trong .NET Framework 2.0 [Linq chỉ được hỗ trợ trong .NET Framework 3.5+].Mã dưới đây không phân biệt chữ hoa chữ thường [vì vậy
2hoặc var exts = new[] { "mp3", "jpg" };
3sẽ được liệt kê quá].var exts = new[] { "mp3", "jpg" };
var exts = new[] { "mp3", "jpg" };
2hoặc var exts = new[] { "mp3", "jpg" };
3sẽ được liệt kê quá].var files = Directory.GetFiles["C:\\path", "*.*", SearchOption.AllDirectories]
.Where[s => s.EndsWith[".mp3"] || s.EndsWith[".jpg"]];
45 hữu ích 0 bình luận chia sẻ 0 bình luận chia sẻ
answer
4
Hàm sau tìm kiếm trên nhiều mẫu, được phân tách bằng dấu phẩy. Bạn cũng có thể chỉ định loại trừ, ví dụ: "! Web.config" sẽ tìm kiếm tất cả các tệp và loại trừ "web.config". Các mẫu có thể được trộn lẫn.Bạn cũng có thể chỉ định loại trừ, ví dụ: "! Web.config" sẽ tìm kiếm tất cả các tệp và loại trừ "web.config". Các mẫu có thể được trộn lẫn.
var files = Directory.GetFiles["C:\\path", "*.*", SearchOption.AllDirectories]
.Where[s => s.EndsWith[".mp3"] || s.EndsWith[".jpg"]];
5Sử dụng:
var files = Directory.GetFiles["C:\\path", "*.*", SearchOption.AllDirectories]
.Where[s => s.EndsWith[".mp3"] || s.EndsWith[".jpg"]];
64 hữu ích 0 bình luận chia sẻ 0 bình luận chia sẻ
answer
4
var files = Directory.GetFiles["C:\\path", "*.*", SearchOption.AllDirectories]
.Where[s => s.EndsWith[".mp3"] || s.EndsWith[".jpg"]];
74 hữu ích 4 bình luận chia sẻ 4 bình luận chia sẻ
answer
3
Chỉ cần tìm một cách khác để làm điều đó. Vẫn không phải là một thao tác, nhưng ném nó ra để xem người khác nghĩ gì về nó.Vẫn không phải là một thao tác, nhưng ném nó ra để xem người khác nghĩ gì về nó.
var files = Directory.GetFiles["C:\\path", "*.*", SearchOption.AllDirectories]
.Where[s => s.EndsWith[".mp3"] || s.EndsWith[".jpg"]];
83 hữu ích 0 bình luận chia sẻ 0 bình luận chia sẻ
answer
3
Thế còn
var files = Directory.GetFiles["C:\\path", "*.*", SearchOption.AllDirectories]
.Where[s => s.EndsWith[".mp3"] || s.EndsWith[".jpg"]];
93 hữu ích 0 bình luận chia sẻ 0 bình luận chia sẻ
answer
2
Thế cònĐiều này hoạt động với .net 2.0 vì nó không sử dụng LINQ.
private static string[] GetFiles[string sourceFolder, string filters, System.IO.SearchOption searchOption]
{
return filters.Split['|'].SelectMany[filter => System.IO.Directory.GetFiles[sourceFolder, filter, searchOption]].ToArray[];
}
0Tạo các phần mở rộng bạn muốn một chuỗi tức là ".mp3.jpg.wma.wmf" và sau đó kiểm tra xem mỗi tệp có chứa phần mở rộng bạn muốn không. Điều này hoạt động với .net 2.0 vì nó không sử dụng LINQ.
Ưu điểm của phương pháp này là bạn có thể thêm hoặc xóa tiện ích mở rộng mà không cần chỉnh sửa mã tức là để thêm hình ảnh png, chỉ cần viết myExtensions = ". Jpg.mp3.png". 1 bình luận chia sẻ
answer
2
private static string[] GetFiles[string sourceFolder, string filters, System.IO.SearchOption searchOption]
{
return filters.Split['|'].SelectMany[filter => System.IO.Directory.GetFiles[sourceFolder, filter, searchOption]].ToArray[];
}
12 hữu ích 1 bình luận chia sẻ 0 bình luận chia sẻ
answer
2
2 hữu ích 0 bình luận chia sẻ
Không ... Tôi tin rằng bạn phải thực hiện nhiều cuộc gọi như loại tệp bạn muốn. Hàm đó sẽ trả về một danh sách chung các tệp khớp với các tiện ích mở rộng tôi đã gửi.
Tôi sẽ tự tạo một hàm lấy một chuỗi trên các chuỗi với các phần mở rộng tôi cần và sau đó lặp lại trên mảng đó để thực hiện tất cả các cuộc gọi cần thiết. Hàm đó sẽ trả về một danh sách chung các tệp khớp với các tiện ích mở rộng tôi đã gửi.
2 hữu ích 1 bình luận chia sẻ 0 bình luận chia sẻ
answer
2
2 hữu ích 0 bình luận chia sẻ
private static string[] GetFiles[string sourceFolder, string filters, System.IO.SearchOption searchOption]
{
return filters.Split['|'].SelectMany[filter => System.IO.Directory.GetFiles[sourceFolder, filter, searchOption]].ToArray[];
}
2Không ... Tôi tin rằng bạn phải thực hiện nhiều cuộc gọi như loại tệp bạn muốn.
private static string[] GetFiles[string sourceFolder, string filters, System.IO.SearchOption searchOption]
{
return filters.Split['|'].SelectMany[filter => System.IO.Directory.GetFiles[sourceFolder, filter, searchOption]].ToArray[];
}
32 hữu ích 1 bình luận chia sẻ 0 bình luận chia sẻ
answer
2
private static string[] GetFiles[string sourceFolder, string filters, System.IO.SearchOption searchOption]
{
return filters.Split['|'].SelectMany[filter => System.IO.Directory.GetFiles[sourceFolder, filter, searchOption]].ToArray[];
}
4Ưu điểm của phương pháp này là bạn có thể thêm hoặc xóa tiện ích mở rộng mà không cần chỉnh sửa mã tức là để thêm hình ảnh png, chỉ cần viết myExtensions = ". Jpg.mp3.png". 1 bình luận chia sẻ
answer
1
2 hữu ích 1 bình luận chia sẻ
private static string[] GetFiles[string sourceFolder, string filters, System.IO.SearchOption searchOption]
{
return filters.Split['|'].SelectMany[filter => System.IO.Directory.GetFiles[sourceFolder, filter, searchOption]].ToArray[];
}
52 hữu ích 0 bình luận chia sẻ
var exts = new[] { "mp3", "jpg" };
4chỉ gọi một lần.Không ... Tôi tin rằng bạn phải thực hiện nhiều cuộc gọi như loại tệp bạn muốn.
private static string[] GetFiles[string sourceFolder, string filters, System.IO.SearchOption searchOption]
{
return filters.Split['|'].SelectMany[filter => System.IO.Directory.GetFiles[sourceFolder, filter, searchOption]].ToArray[];
}
6Tôi sẽ tự tạo một hàm lấy một chuỗi trên các chuỗi với các phần mở rộng tôi cần và sau đó lặp lại trên mảng đó để thực hiện tất cả các cuộc gọi cần thiết. Hàm đó sẽ trả về một danh sách chung các tệp khớp với các tiện ích mở rộng tôi đã gửi.
private static string[] GetFiles[string sourceFolder, string filters, System.IO.SearchOption searchOption]
{
return filters.Split['|'].SelectMany[filter => System.IO.Directory.GetFiles[sourceFolder, filter, searchOption]].ToArray[];
}
7Không ... Tôi tin rằng bạn phải thực hiện nhiều cuộc gọi như loại tệp bạn muốn.
private static string[] GetFiles[string sourceFolder, string filters, System.IO.SearchOption searchOption]
{
return filters.Split['|'].SelectMany[filter => System.IO.Directory.GetFiles[sourceFolder, filter, searchOption]].ToArray[];
}
8Tôi sẽ tự tạo một hàm lấy một chuỗi trên các chuỗi với các phần mở rộng tôi cần và sau đó lặp lại trên mảng đó để thực hiện tất cả các cuộc gọi cần thiết. Hàm đó sẽ trả về một danh sách chung các tệp khớp với các tiện ích mở rộng tôi đã gửi. 0 bình luận chia sẻ
answer
1
Hy vọng nó giúp.
trong .NET 2.0 [không có Linq]:
GetFiles, sau đó lọc: Nhanh, nhưng trình diệt bộ nhớ do lưu trữ trên đầu cho đến khi các bộ lọc được áp dụng
Lọc trong khi GetFiles: Làm chậm các bộ lọc hơn được đặt, nhưng mức sử dụng bộ nhớ thấp vì không có chi phí nào được lưu trữ. Điều này được giải thích trong một trong những bài viết trên với điểm chuẩn ấn tượng: Mỗi tùy chọn bộ lọc gây ra hoạt động GetFile riêng biệt để cùng một phần của ổ cứng được đọc nhiều lần.
Điều này được giải thích trong một trong những bài viết trên với điểm chuẩn ấn tượng: Mỗi tùy chọn bộ lọc gây ra hoạt động GetFile riêng biệt để cùng một phần của ổ cứng được đọc nhiều lần.
Theo tôi, Tùy chọn 1] tốt hơn, nhưng sử dụng SearchOption.AllDirectories trên các thư mục như C: \ sẽ sử dụng một lượng lớn bộ nhớ. Do đó tôi sẽ chỉ thực hiện một phương thức đệ quy đi qua tất cả các thư mục con bằng cách sử dụng tùy chọn 1]
Do đó tôi sẽ chỉ thực hiện một phương thức đệ quy đi qua tất cả các thư mục con bằng cách sử dụng tùy chọn 1]
Điều này chỉ gây ra 1 hoạt động GetFiles trên mỗi thư mục và nhanh chóng [Tùy chọn 1], nhưng chỉ sử dụng một lượng bộ nhớ nhỏ vì các bộ lọc được áp dụng sau mỗi lần đọc của thư mục con -> chi phí bị xóa sau mỗi thư mục con.
Xin hãy sửa tôi nếu tôi sai. Tôi như tôi đã nói khá mới về lập trình nhưng muốn hiểu sâu hơn về mọi thứ để cuối cùng trở nên giỏi về việc này :]Tôi như tôi đã nói khá mới về lập trình nhưng muốn hiểu sâu hơn về mọi thứ để cuối cùng trở nên giỏi về việc này :]
1 hữu ích 0 bình luận chia sẻ 0 bình luận chia sẻ
answer
0
Tôi không biết giải pháp nào tốt hơn, nhưng tôi sử dụng giải pháp này:
private static string[] GetFiles[string sourceFolder, string filters, System.IO.SearchOption searchOption]
{
return filters.Split['|'].SelectMany[filter => System.IO.Directory.GetFiles[sourceFolder, filter, searchOption]].ToArray[];
}
90 hữu ích 0 bình luận chia sẻ 0 bình luận chia sẻ
answer
0
Tôi không biết giải pháp nào tốt hơn, nhưng tôi sử dụng giải pháp này:
string supportedExtensions = "*.jpg,*.gif,*.png,*.bmp,*.jpe,*.jpeg,*.wmf,*.emf,*.xbm,*.ico,*.eps,*.tif,*.tiff,*.g01,*.g02,*.g03,*.g04,*.g05,*.g06,*.g07,*.g08";
foreach [string imageFile in Directory.GetFiles[_tempDirectory, "*.*", SearchOption.AllDirectories].Where[s => supportedExtensions.Contains[Path.GetExtension[s].ToLower[]]]]
{
//do work here
}
00 hữu ích 0 bình luận chia sẻ
string supportedExtensions = "*.jpg,*.gif,*.png,*.bmp,*.jpe,*.jpeg,*.wmf,*.emf,*.xbm,*.ico,*.eps,*.tif,*.tiff,*.g01,*.g02,*.g03,*.g04,*.g05,*.g06,*.g07,*.g08";
foreach [string imageFile in Directory.GetFiles[_tempDirectory, "*.*", SearchOption.AllDirectories].Where[s => supportedExtensions.Contains[Path.GetExtension[s].ToLower[]]]]
{
//do work here
}
1Nếu bạn đang sử dụng VB.NET [hoặc nhập phụ thuộc vào dự án C # của bạn], thực sự tồn tại một phương thức tiện lợi cho phép lọc nhiều tiện ích mở rộng:
var exts = new[] { "mp3", "jpg" };
5.0 hữu ích 0 bình luận chia sẻ 0 bình luận chia sẻ
answer
0
Tôi không biết giải pháp nào tốt hơn, nhưng tôi sử dụng giải pháp này:Chẳng hạn, bạn có hai tệp Test1.xls và Test2.xlsx và bạn muốn lọc tệp xls bằng mẫu tìm kiếm * .xls, nhưng GetFiles trả về cả Test1.xls và Test2.xlsx Tôi không biết điều này và đã gặp lỗi khi sản xuất môi trường khi một số tập tin tạm thời đột nhiên được xử lý như tập tin bên phải. Mẫu tìm kiếm là * .txt và các tệp tạm thời được đặt tên * .txt20181028_100753898 Vì vậy, mẫu tìm kiếm không thể tin cậy được, bạn cũng phải thêm kiểm tra tên tệp.
0 hữu ích 0 bình luận chia sẻ 0 bình luận chia sẻ
answer
1
Tôi không biết giải pháp nào tốt hơn, nhưng tôi sử dụng giải pháp này:
string supportedExtensions = "*.jpg,*.gif,*.png,*.bmp,*.jpe,*.jpeg,*.wmf,*.emf,*.xbm,*.ico,*.eps,*.tif,*.tiff,*.g01,*.g02,*.g03,*.g04,*.g05,*.g06,*.g07,*.g08";
foreach [string imageFile in Directory.GetFiles[_tempDirectory, "*.*", SearchOption.AllDirectories].Where[s => supportedExtensions.Contains[Path.GetExtension[s].ToLower[]]]]
{
//do work here
}
20 hữu ích 0 bình luận chia sẻ 1 bình luận chia sẻ
answer
2
Tôi không biết giải pháp nào tốt hơn, nhưng tôi sử dụng giải pháp này:
string supportedExtensions = "*.jpg,*.gif,*.png,*.bmp,*.jpe,*.jpeg,*.wmf,*.emf,*.xbm,*.ico,*.eps,*.tif,*.tiff,*.g01,*.g02,*.g03,*.g04,*.g05,*.g06,*.g07,*.g08";
foreach [string imageFile in Directory.GetFiles[_tempDirectory, "*.*", SearchOption.AllDirectories].Where[s => supportedExtensions.Contains[Path.GetExtension[s].ToLower[]]]]
{
//do work here
}
30 hữu ích 0 bình luận chia sẻ 1 bình luận chia sẻ