【NCRE】按照指定条件查找文件

NCRE需求】

 

         要求获取指定文件夹中,后缀名为“.bmp”的所有文件。

 

         这个题目要求的内容是在数据库题库表中的questionContext字段下的数据。内容为“获取HBTestA文件夹下所有以“.bmp”为后缀名的文件”。

 

         要想用C#实现这个功能,我们就要将HBTestA.docx这两个内容取出来。此需求也就转换为获取一句话中的指定内容。

 

【解决思路】

 

         最初上网查了一些资料,可能关键字用的不正确吧,一直查不到自己想要的内容。就想要换一种思路来进行。正好JS学到了正则表达式这一块,于是就想用正则表达式来实现这一需求。

 

         1、先获取“.bmp”中的内容,也就是获取双引号中的内容,我要查询什么类型的文件

         匹配到的正则表达式:"(?<=“).*?(?=”)"

       Regex re = newRegex("(?<=“).*?(?=”)", RegexOptions.None);

    MatchCollection mc = re.Matches(题目要求);

 

       2、我要在哪个目录下查找符合要求的文件,也就是要获取HBTestA

 

         我不仅要获取.bmp,我还要获取出HBTestA。而且,每套题的文件夹名称和后缀名类型都是这样的一个顺序,所以为了方便写代码,我将HBTestA也加上了引号。

       

          于是:获取HBTestAmc[0].ToString();.docxmc[1].Tostring();

           获取了HBTestA之后再拼接成完成的路径:directory=@"D:\计算机一级考生文件"+mc[0].Tostring();

 

       3、开始查找

       

       此块代码为赵寒开发出来的。

                string str = @"D:\计算机一级考生文件\winkt\"+ mc[1].ToString ();

                var files =Directory.GetFiles(str,  "*" +mc[0].ToString () );

 

     4、将所有符合要求的文件路径拼接成一个字符串更新为考生答案。

     

                foreach(var file in files)

                Text1.text += file;

      

    5、拼接出来的正确答案为:

 

    “D:\计算机一级考生文件\winkt\HBTestA\CASLRPT.BMPD:\计算机一级考生文件\winkt\HBTestA\MS.BMPD:\计算机一级考生文件\winkt\HBTestA\usWIZFLAX.BMPD:\计算机一级考生文件\winkt\HBTestA\WIZSTONE.BMP”

       

   【遇到的问题】

 

         如果我将“计算机一级考生文件”这个文件夹改为其他文件夹名字,那么我题库中的正确答案也要修改。

         所以,我们应该只获取文件名而不是路径,这样,无论文件夹名称怎样改,我们的题库都不用改。


   PS:此处代码还在修改中!


 【总结】

  

    现在发现,代码什么的都不是最重要,一个好的Idea很重要,然后是Take Action。在这个过程中收获最大的还是思维的转变。

你可能感兴趣的:(【NCRE】按照指定条件查找文件)