2010-11-23 159 views
73

我想在文件夾中的文件,並在它下面的代碼不會得到其子文件夾中的文件subfolders.The:如何遍歷c#.net中目錄中的所有文件?

string[] files = Directory.GetFiles(txtFolderPath.Text, "*ProfileHandler.cs"); 

誰能請告訴我如何實現這在C#.NET?

+2

我一直首選MSDN的做事方法。在[此鏈接](http://msdn.microsoft.com/en-us/library/07wt70x2.aspx)的底部,它們提供了一個具有控制檯程序(C#)的遞歸示例。 – Justin 2013-05-04 01:30:08

+1

@Panuvin - 注意:MSDN代碼有點危險。對於非常大的文件夾和子文件夾內容(很多很多文件),你可以得到一個StackOverflow異常(因爲遞歸代碼) – Joezer 2014-05-28 07:12:30

回答

139
string[] files = 
    Directory.GetFiles(txtPath.Text, "*ProfileHandler.cs", SearchOption.AllDirectories); 

這最後一個參數的效果正是你指的是什麼。將其設置爲AllDirectories包括子文件夾中的每個文件,並將其設置爲TopDirectoryOnly如果您只想搜索給定的目錄而不是子文件夾。

參考MDSN的細節:https://msdn.microsoft.com/en-us/library/ms143316(v=vs.110).aspx

+5

如果你的文件夾結構中存在循環,這將會無限循環。請參閱http://msdn.microsoft.com/en-us/library/ms143448.aspx – 2013-10-02 07:31:37

2

嘗試下面的代碼

Directory.GetFiles(txtFolderPath.Text, "*ProfileHandler.cs",SearchOption.AllDirectories) 
-4

可能是你可以嘗試用小的改動此功能;

public function RecursiveFiles(FolderPath) 

Dim folder As DirectoryInfo = New DirectoryInfo(FolderPath) 
Dim Subfolders() As DirectoryInfo = folder .GetDirectories() 
Dim strFiles() As FileInfo = myfolder.GetFiles() 
For Each myItem As DirectoryInfo In mySubfolders 
RecursiveFiles(myItem.FullName) 
Next 

end function 


Here是實際的代碼。嘗試一些修改。

相關問題