首先需要定义文件信息记录类:
1 public class FileData 2 { 3 private string myFullName; 4 private string myName; 5 private string myExtension; 6 private long myLength; 7 8 public FileData(){} 9 10 public FileData( string strFullName, string strName, string strExtension, long intLength ) 11 { 12 this.myFullName = strFullName; 13 this.myName = strName; 14 this.myExtension = strExtension; 15 this.myLength = intLength; 16 } 17 18 public string FullName 19 { 20 get 21 { 22 return this.myFullName; 23 } 24 } 25 26 public string Name 27 { 28 get 29 { 30 return this.myName; 31 } 32 } 33 34 public string Extension 35 { 36 get 37 { 38 return this.myExtension; 39 } 40 } 41 42 public long Length 43 { 44 get 45 { 46 return this.myLength; 47 } 48 } 49 50 public override string ToString() 51 { 52 return this.myFullName; 53 } 54 }
定义查找文件类(可递归):
1 public class FileExplorer 2 { 3 public ArrayList FileList = new ArrayList(); 4 public ArrayList Extensions = null; 5 private string Path = ""; 6 private bool Recursive = true; 7 8 public FileExplorer( string path ) 9 { 10 this.Path = path; 11 this.Recursive = false; 12 this.FileList = this.getFiles(); 13 } 14 15 public FileExplorer( string path, ArrayList extensions ) 16 { 17 this.Path = path; 18 this.Extensions = extensions; 19 this.Recursive = false; 20 this.FileList = this.getFiles(); 21 } 22 23 public FileExplorer( string path, bool recursive ) 24 { 25 this.Path = path; 26 this.Recursive = recursive; 27 this.FileList = this.getFiles(); 28 } 29 30 public FileExplorer( string path, ArrayList extensions, bool recursive ) 31 { 32 this.Path = path; 33 this.Extensions = extensions; 34 this.Recursive = recursive; 35 this.FileList = this.getFiles(); 36 } 37 38 public ArrayList getFiles() 39 { 40 DirectoryInfo dir = new DirectoryInfo( this.Path ); 41 FileInfo[] files; 42 DirectoryInfo[] dirs; 43 ArrayList List = new ArrayList(); 44 if (! dir.Exists) 45 { 46 throw new Exception("文件夹不存在: " + this.Path ); 47 } 48 49 files = dir.GetFiles(); 50 51 foreach(FileInfo file in files) 52 { 53 if( this.Extensions == null ) 54 { 55 List.Add( new FileData( file.FullName, file.Name, file.Extension, file.Length ) ); 56 } 57 else 58 { 59 if( this.checkFile( file.Extension ) ) 60 { 61 List.Add( new FileData( file.FullName, file.Name, file.Extension, file.Length ) ); 62 } 63 } 64 } 65 66 files = null; 67 68 if (! this.Recursive) 69 { 70 return List; 71 } 72 73 dirs = dir.GetDirectories(); 74 75 foreach(DirectoryInfo subdir in dirs) 76 { 77 this.Path = subdir.FullName; 78 ArrayList temp = new ArrayList(); 79 temp = getFiles(); 80 for(int i=0; i < temp.Count; i++) 81 { 82 FileData TempData = (FileData)temp[i]; 83 List.Add( new FileData( TempData.FullName, TempData.Name, TempData.Extension, TempData.Length ) ); 84 } 85 } 86 87 dirs = null; 88 89 dir = null; 90 91 return List; 92 } 93 94 private bool checkFile( string strExtension ) 95 { 96 bool throwaway = true; 97 for(int j=0; j<this.Extensions.Count; j++) 98 { 99 if( this.Extensions[j].ToString() == strExtension ) 100 { 101 throwaway = false; 102 } 103 } 104 105 if( throwaway ) 106 { 107 return false; 108 } 109 else 110 { 111 return true; 112 } 113 } 114 115 }