2012-09-28 226 views
2

我嘗試搜索使用野生card.My代碼文件的文件夾內的文件是:搜索使用通配符

  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"。其work.But如果我給SearchQuery ="a"我想用一個結果

and.jpg 
asp.jpg 

始於a。就是所有文件,也可能內部通配符GetFiles(SearchQuery + "?")。謝謝。

回答

5

您可以使用需要的搜索模式的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因爲在處理多個文件和目錄時,它可以提高資源利用率。

6

使用DirectoryInfo.GetFiles Method (String),你可以用它

* - Zero or more characters. 

? - Exactly one character. 

指定外卡您可以嘗試:

dirInfo.GetFiles("a*"); 

?代替你可以使用*在查詢得到與searchquery啓動文件和以任何其他字符結尾。