为了账号安全,请及时绑定邮箱和手机立即绑定

如何将文件扩展名与文本框中键入的内容进行比较,而不是先点?

如何将文件扩展名与文本框中键入的内容进行比较,而不是先点?

C#
扬帆大鱼 2022-11-22 16:25:24
我正在搜索文件。并且根据我在 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....


查看完整回答
反对 回复 2022-11-22
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

Path.GetExtension 返回带有 . (.docx),因此您可以更改 if 条件以自动添加:

if (!files.Contains(file) && ext == "." + textBox2.Text)


查看完整回答
反对 回复 2022-11-22
  • 2 回答
  • 0 关注
  • 70 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信