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

我正在搜索文件。并且根据我在 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 。所以它会搜索所有的扩展。


扬帆大鱼
浏览 83回答 2
2回答

慕尼黑的夜晚无繁华

EnumerateFiles 有一个接受搜索过滤器的原型。让操作系统过滤文件比自己在代码中过滤文件效率更高。要获取具有特定扩展名的文件,请这样搜索:EnumerateFiles(root, "*." + extension);要获取所有文件,请使用:EnumerateFiles(root, "*.*");要涵盖这两种情况,您可以使用:var extension = Textbox2.Text;if (string.IsNullOrWhitespace(extension)) extension = "*.*";foreach (var file in Directory.EnumerateFiles(root, extension){&nbsp; &nbsp; //etc....

慕婉清6462132

Path.GetExtension 返回带有 .&nbsp;(.docx),因此您可以更改 if 条件以自动添加:if&nbsp;(!files.Contains(file)&nbsp;&&&nbsp;ext&nbsp;==&nbsp;"."&nbsp;+&nbsp;textBox2.Text)
打开App,查看更多内容
随时随地看视频慕课网APP