using System; using System.IO; class ListAllFilesDemo { public static void Main() { Console.Write( "請輸入要查詢的目錄: "); string dir = Console.ReadLine(); try { ListFiles(new DirectoryInfo(dir)); } catch(IOException e) { Console.WriteLine(e.Message); } } public static void ListFiles(FileSystemInfo info) { if(!info.Exists) return; DirectoryInfo dir = info as DirectoryInfo; //不是目錄 if(dir == null) return; FileSystemInfo [] files = dir.GetFileSystemInfos(); for(int i = 0; i < files.Length; i++) { FileInfo file = files[i] as FileInfo; //是文件 if(file != null) Console.WriteLine(file.FullName + "\t " + file.Length); //對於子目錄,進行遞歸調用 else ListFiles(files[i]); } } } C#中遍歷目錄下的目錄的文件(二) 1、遍歷一個目錄下的全部目錄,要用到System.IO.DirectoryInfo 類的GetDirectories方法: DirectoryInfo dir = new DirectoryInfo(@"c:\"); foreach(DirectoryInfo dChild in dir.GetDirectories("*")) {//如果用GetDirectories("ab*"),那麼全部以ab開頭的目錄會被顯示 Response.Write(dChild.Name + "<BR>");//打印目錄名 Response.Write(dChild.FullName + "<BR>");//打印路徑和目錄名 } 2、遍歷一個目錄下的全部文件,要用到System.IO.DirectoryInfo 類的GetFiles方法: DirectoryInfo dir = new DirectoryInfo(@"c:\"); foreach(DirectoryInfo dChild in dir.GetFiles("*")) {//如果用GetFiles("*.txt"),那麼全部txt文件會被顯示 Response.Write(dChild.Name + "<BR>");//打印文件名 Response.Write(dChild.FullName + "<BR>");//打印路徑和文件名 } 如何獲取指定目錄包含的文件和子目錄 1. DirectoryInfo.GetFiles():獲取目錄中(不包含子目錄)的文件,返回類型為FileInfo[],支持通配符查找; 2. DirectoryInfo.GetDirectories():獲取目錄(不包含子目錄)的子目錄,返回類型為DirectoryInfo[],支持通配符查找; 3. DirectoryInfo. GetFileSystemInfos():獲取指定目錄下(不包含子目錄)的文件和子目錄,返回類型為FileSystemInfo[],支持通配符查找; 如何獲取指定文件的基本信息; FileInfo.Exists:獲取指定文件是否存在; FileInfo.Name,FileInfo.Extensioin:獲取文件的名稱和擴展名; FileInfo.FullName:獲取文件的全限定名稱(完整路徑); FileInfo.Directory:獲取文件所在目錄,返回類型為DirectoryInfo; FileInfo.DirectoryName:獲取文件所在目錄的路徑(完整路徑); FileInfo.Length:獲取文件的大小(字節數); FileInfo.IsReadOnly:獲取文件是否只讀;www.2cto.com FileInfo.Attributes:獲取或設置指定文件的屬性,返回類型為FileAttributes枚舉,可以是多個值的組合 FileInfo.CreationTime、FileInfo.LastAccessTime、FileInfo.LastWriteTime:分別用於獲取文件的創建時間、訪問時間、修改時間; 采用遞歸的方式遍歷,文件夾和子文件中的所有文件。 public void FindFile(string dirPath) //參數dirPath為指定的目錄 { //在指定目錄及子目錄下查找文件,在listBox1中列出子目錄及文件 DirectoryInfo Dir=new DirectoryInfo(dirPath); try { foreach(DirectoryInfo d in Dir.GetDirectories()//查找子目錄 { FindFile(Dir+d.ToString()+"\"); listBox1.Items.Add(Dir+d.ToString()+"\"); //listBox1中填加目錄名 } foreach(FileInfo f in Dir.GetFiles("*.---")) //查找文件 { listBox1.Items.Add(Dir+f.ToString()); //listBox1中填加文件名 } } catch(Exception e) { MessageBox.Show(e.Message); } } 用下面代碼限制文件的類型: foreach(FileInfo f in Dir.GetFiles("*.---")) //查找文件 “*.---”指要訪問的文件的類型的擴展名