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

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

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

C#
扬帆大鱼 2022-11-22 16:25:24

我正在搜索文件。并且根据我在 textBox2 中键入的扩展名,我想在其中搜索文件类型。例如,如果我在 textBox2 .txt 中键入,它将搜索所有文本文件。但我不想输入 .cs 或 .txt 我只想输入 cs 或 txt


string 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贡献1564条经验 获得超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贡献1512条经验 获得超2个赞

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

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


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

添加回答

举报

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