我正在搜索文件。并且根據我在 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 關注
- 110 瀏覽
添加回答
舉報
0/150
提交
取消