C#搜索指定文件夾內的符合要求的文件


下面的列子是文件的模糊查找,

具體功能是:選定文件夾,搜索所有文件命中包含“_bui”字樣的shp圖層(后綴為.shp)並將信息顯示在ListView中。實際應用中可隨便修改。

這里采用遞歸方法進行深度搜索,淺層的搜索就不再記錄。

 

List<FiledInfo>Listed=new List<FileInfo>();//存儲符合要求的文件的FiledInfo

string hz="shp"//文件后綴

private int k=0;

public List<FileInfo>GetAllFiles(string path)

{    

    if(!Directory.Exists(path)) //判斷文件夾是否存在,一般直接選着文件夾不會有問題,這里是應對手動輸入的情況

 

        return null;

 

    DirectoryInfo dir=new DirectorInfo(path);  

    if(k<1)

      {

         FileInfo[]fi=dir.GetFiles();

         for(int i=0;i<fi.Length;i++)

             {

                  string filestr=fi[i].Name;

                  if((filestr.Congtains(filestr.LastIndexOf(".")+1))==hz)

                   {

                       if(filestr.Contains("_bui")||filestr.Contains("_BUI"))

                          List.Add(fi[i]);

                   }

             }

             k++;

      }

      else

     {

         List<FileInfo>subList=GetFilesByDir(path);     

         foreach (FileInfo subFile in subList)
         {
            List.Add(subFile);
         }
      }
         DirectoryInfo[] subDir = dir.GetDirectories();
         string Spath = "";
         foreach (DirectoryInfo d in subDir)
        {
             Spath = path + "\\" + d.ToString() + "\\";
              GetAllFiles(Spath);
         }
         return List;
 }

 

private List<FileInfo> GetFilesByDir(string path)
{

   DirectoryInfo di = new DirectoryInfo(path);
   //找到該目錄下的文件
   FileInfo[] fi = di.GetFiles();
   //把FileInfo[]數組轉換為List    
   List<FileInfo> list = new List<FileInfo>();

  for (int i = 0; i < fi.Length; i++)
    {
      string filestr = fi[i].Name;
      if ((filestr.Substring(filestr.LastIndexOf(".") + 1)) == hz)
       {
           if (filestr.Contains("_bui") || filestr.Contains("_BUI"))
           List.Add(fi[i]);
        }
    }
    return list;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM