c#遍歷一個資料夾下的所有檔案包括子資料夾
阿新 • • 發佈:2019-02-04
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:獲取檔案是否只讀;
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("*.---")) //查詢檔案
“*.---”指要訪問的檔案的型別的副檔名