1. 程式人生 > >c#遍歷一個資料夾下的所有檔案包括子資料夾

c#遍歷一個資料夾下的所有檔案包括子資料夾

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("*.---")) //查詢檔案
“*.---”指要訪問的檔案的型別的副檔名