我正在搜索文件。并且根据我在 textBox2 中键入的扩展名,我想在其中搜索文件类型。例如,如果我在 textBox2 .txt 中键入,它将搜索所有文本文件。但我不想输入 .cs 或 .txt 我只想输入 cs 或 txtstring restrictedFile = ""; List<string> restrictedFiles = new List<string>(); int numberofrestrictedFiles = 0; int numberoffiles = 0; IEnumerable<string> SearchAccessibleFilesNoDistinct(string root, List<string> files,BackgroundWorker worker, DoWorkEventArgs e) { _busy.WaitOne(); if (files == null) files = new List<string>(); if (Directory.Exists(root)) { foreach (var file in Directory.EnumerateFiles(root)) { if (worker.CancellationPending == true) { e.Cancel = true; return files; } restrictedFile = file; string ext = Path.GetExtension(file); if (!files.Contains(file) && ext == textBox2.Text) { files.Add(file); } numberoffiles++; label24.Invoke((MethodInvoker)delegate { label24.Text = numberoffiles.ToString(); label24.Visible = true; }); } foreach (var subDir in Directory.EnumerateDirectories(root)) { if (worker.CancellationPending == true) { e.Cancel = true; return files; } try { SearchAccessibleFilesNoDistinct(subDir, files,worker, e); }在这部分,我获取文件扩展名并检查 textBox2 中的文件扩展名是否相同。但是由于文件扩展名是 .txt 或 .cs 或 .gif,我还必须在 textBox2 中输入“.”。相反,我只想输入 cs gif txt....另一个子问题,我怎样才能让它在所有文件扩展名中搜索?例如,如果我在 textBox2 中键入他的字符串 ALL 或 maybe 。所以它会搜索所有的扩展。
2 回答
慕尼黑的夜晚无繁华
TA贡献1864条经验 获得超6个赞
EnumerateFiles 有一个接受搜索过滤器的原型。让操作系统过滤文件比自己在代码中过滤文件效率更高。
要获取具有特定扩展名的文件,请这样搜索:
EnumerateFiles(root, "*." + extension);
要获取所有文件,请使用:
EnumerateFiles(root, "*.*");
要涵盖这两种情况,您可以使用:
var extension = Textbox2.Text;
if (string.IsNullOrWhitespace(extension)) extension = "*.*";
foreach (var file in Directory.EnumerateFiles(root, extension)
{
//etc....
慕婉清6462132
TA贡献1804条经验 获得超2个赞
Path.GetExtension 返回带有 . (.docx),因此您可以更改 if 条件以自动添加:
if (!files.Contains(file) && ext == "." + textBox2.Text)
- 2 回答
- 0 关注
- 70 浏览
添加回答
举报
0/150
提交
取消