【问题标题】:Search File inside a folder using wild card使用通配符搜索文件夹内的文件
【发布时间】:2012-09-28 09:30:55
【问题描述】:

我尝试使用通配符搜索文件。我的代码是:

          string  SearchQuery ='';
           List<ATTFile> lstFiles = new List<ATTFile>();
            if (Directory.Exists(FilePath))
            {
                DirectoryInfo dirInfo = new DirectoryInfo(FilePath);//File PAth is not a problem.

              foreach (FileInfo file in dirInfo.GetFiles(SearchQuery + "?"))//Want help here  
              {

                    ATTFile obj = new ATTFile();
                    obj.FileName = file.Name;
                    obj.Folder = file.Directory.ToString();
                    obj.Size = int.Parse(file.Length.ToString());
                    obj.Extension = file.Extension;
                    lstFiles.Add(obj);

                }


            }

如果我给出完整的文件名,代码就可以工作。 例如: 在一个目录中,我有以下文件。

and.jpg
asp.jpg
bb.jpg
cc.jpg 

如果我给出完整的文件名,则使用上面的代码它的工作意味着SearchQuery ="and.jpg"。它的工作。但如果我给出SearchQuery ="a",我想要一个结果

and.jpg
asp.jpg

所有文件都以a开头。是否可以在GetFiles(SearchQuery + "?")中使用通配符。谢谢。

【问题讨论】:

    标签: c# asp.net file fileinfo


    【解决方案1】:

    使用DirectoryInfo.GetFiles Method (String),可以指定通配符

    * - Zero or more characters.
    
    ? - Exactly one character.
    

    你可以试试:

    dirInfo.GetFiles("a*");
    

    您可以在查询中使用* 而不是? 来获取以searchquery 开头并以任何其他字符结尾的文件。

    【讨论】:

      【解决方案2】:

      您可以使用采用搜索模式的overload

      String fileNamePart = "a";
      String fileExtension= ".jpg";
      String searchPattern = String.Format("{0}*{1}", fileNamePart, fileExtension);
      dirInfo.GetFiles(searchPattern)
      

      如果你想要一个查询,你也可以使用 LINQ:

      lstFiles = dirInfo.EnumerateFiles(searchPattern)
                        .Select(file => new ATTFile(){
                            FileName = file.Name;
                            Folder = file.Directory.ToString();
                            Size = int.Parse(file.Length.ToString());
                            Extension = file.Extension;
                        }).ToList();
      

      请注意,我在这里使用DirectoryInfo.EnumerateFiles,因为当您处理许多文件和目录时,它可以更节省资源。

      【讨论】:

        猜你喜欢
        • 2016-07-25
        • 1970-01-01
        • 2011-03-21
        • 2014-12-09
        • 2017-01-28
        • 2014-10-26
        • 1970-01-01
        • 2011-02-03
        • 2021-01-13
        相关资源
        最近更新 更多