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;
}

上一篇:Java防盗链机制


下一篇:命名空间出错 namespace Web.Skin.@default