2012年9月5日星期三

文件的深度搜索和广度搜索

文件的深度搜索和广度搜索

   1: using System; 
   2: using System.Collections.Generic; 
   3: using System.Linq; 
   4: using System.Text; 
   5: using System.IO; 
   6: using System.Collections; 
   7:   
   8: namespace ListFiles 
   9: { 
  10:     class Program 
  11:     { 
  12:        static  private void GetChildFiles(DirectoryInfo childDir,string strExtension,ArrayList files)//递归扫描每一个文件和文件夹 
  13:            //chidDir 子目录列表 strExtension 扩展名 files 文件数组 
  14:         {            
  15:            FileInfo [] file = childDir.GetFiles();              //获取子目录的所有文件 
  16:            foreach (FileInfo ss in file)                        //获取子目录文件中有相应扩展名的文件 
  17:            {  
  18:                 if(ss.Extension == strExtension ) 
  19:                     files.Add(ss); 
  20:            } 
  21:            // 递归进入每一个子目录 
  22:            DirectoryInfo[] kk = childDir.GetDirectories();      //获取当前目录的子目录 
  23:            foreach (DirectoryInfo ww in kk) 
  24:            { 
  25:                GetChildFiles(ww, strExtension, files); 
  26:            } 
  27:         } 
  28:   
  29:         private ArrayList GetAllFiles(string strPath,string strExtension) 
  30:             //strPath目录,strExtension 扩展名 
  31:         { 
  32:                ArrayList files = new ArrayList(); 
  33:                DirectoryInfo dir=new DirectoryInfo(strPath); 
  34:                FileInfo[] result=dir.GetFiles();                        //获得该目录所以文件存入result[]数组中去 
  35:   
  36:                foreach (FileInfo file in result )                       //检索相应扩展名的文件 
  37:                {    
  38:                     if(file.Extension == strExtension) 
  39:                         files.Add(file);                                //如果是要寻找的扩展名添加到文件数组中去 
  40:                } 
  41:                DirectoryInfo[] childDir = dir.GetDirectories();         //获取当前目录的子目录 
  42:                foreach(DirectoryInfo file in childDir )                 
  43:                { 
  44:                     GetChildFiles(file,strExtension,files); 
  45:                } 
  46:                return files;      
  47:           } 
  48:   
  49:         static void Main(string[] args) 
  50:         { 
  51:             Program test = new Program(); 
  52:             Console.WriteLine("请输入指定目录名:  "); 
  53:             string dir = Console.ReadLine(); 
  54:             Console.WriteLine("请输入指定扩展名:  "); 
  55:             string extension = Console.ReadLine(); 
  56:             ArrayList files = new ArrayList();                      //建立文件数组 
  57:             files = test.GetAllFiles(dir, extension);            
  58:             if (files.Count == 0)                                          //获取文件数组中的文件数 
  59:                 Console.WriteLine("\n该目录下无以 " + extension + " 为扩展名的文件"); 
  60:             else 
  61:             { 
  62:                 Console.WriteLine("\n该目录下以{0}为扩展名的文件及父目录,创建时间,上次修改时间,文件长度等属性如下:\n", extension); 
  63:                 foreach (FileInfo file in files) 
  64:                 { 
  65:                     Console.WriteLine(file.Name + "    " + file.Directory.Name + "  " + file.CreationTime + "   " +                                             file.LastWriteTime + "   " + file.Length); 
  66:                 } 
  67:             } 
  68:             Console.ReadKey(); 
  69:         } 
  70:     } 
  71: } 


TAG: