2013-05-30 68 views
0

我想要瀏覽目錄並獲取所有文件的大小,名稱和URL。 我不喜歡這樣的:從c#代碼目錄中獲取所有文件的名稱,大小和url

int i = 0; 
       foreach (string sFileName in Directory.GetFiles(Path.Combine(@"C:\Projets", path2))) 
       { 
        i++; 
       } 

我算的文件數在目錄中,但是當我在它裏面的其他目錄的問題,我該怎麼做才能讓所有的文件,它caracteristics?

+1

http://stackoverflow.com/questions/929276/how-to-recursively-list-all-the-files-in-a-directory-in-c – aquaraga

+0

將所有這一切都放在方法中 做一個遞歸調用,直到最後沒有任何文件 – Bunny

回答

1

這是許多其他類似的問題重複。如果您想獲得擴展文件信息,請使用XxxInfo類,例如DirectoryInfo,FileInfo而不是Directory和File類。

此外,所有GetXXX或EnumerateXXX方法都有SearchOption參數的重載,它允許您返回所有文件,而不僅僅是頂層目錄的文件。

對於您的具體問題,要獲取有關使用例如目錄下的目錄下的所有文件的信息。 GetFiles

var di=new DirectoryInfo(somePath); 
var allFiles=di.GetFiles("*",SearchOption.AllDirectories); 
foreach(var file in allFiles) 
{ 
    Console.WriteLine("{0} {1}",file.Name,file.Length); 
} 

的GetFiles和EnumerateFiles之間的區別是,GetFiles的返回它檢索一個目錄下的所有文件,這可能需要很長的時間之後。 EnumerateFiles返回一個迭代器,因此您可以在foreach語句中使用它來一次處理每個文件,並在您喜歡的情況下通過跳出循環來停止迭代。

0

通過所有的文件本應循環遞歸

foreach (string sFileName in Directory.EnumerateFiles(Path.Combine(@"C:\Projets", path2), "*.*", SearchOption.AllDirectories)) 
     { 
      //Get file information here 
      FileInfo f = new FileInfo(sFileName); 
      Console.WriteLine("{0} - {1}", f.Length, f.Name); 
     } 
相關問題