遍历根目录并获取其中的所有文件?

问题描述:

嗨 我正在创建一个应用程序,我想知道每个文件都出现在该文件夹下.i.e。我怎么能遍历根目录,并获得每个文件访问列表一次。遍历根目录并获取其中的所有文件?

如果您只需一次列出所有内容,则可以对包含该选项的GetFiles使用重载。

string[] filePaths = Directory.GetFiles(@"c:\MyDir\", "*.*", SearchOption.AllDirectories); 

显然,在一个Web应用程序,你就不太可能有机会获得“C:\ MYDIR”,这样你就可以用可变拿着MapPath的呼叫,像这样的结果取代:

var rootDir = Server.MapPath("~/App_Data"); 

使用Directory.EnumerateFiles(String, String, SearchOption)功能与SearchOption.AllDirectories

foreach (var file in Directory.EnumerateFiles(@"c:\", "*.txt", SearchOption.AllDirectories)) 
{ 
    // Do stuff here 
} 

EnumerateFiles方法比GetFiles的方法方式更快,因为它实际上只是返回普查员和不实际访问文件,直到它们是红色的。

+0

数字在框架中会有些东西会为你做。这只会返回完整的路径。如果您想获得表示文件属性的对象,则需要额外的工作。 – NerdFury 2011-05-18 13:49:07

您可以使用DirectoryInfo和FileInfo类以及递归函数。

void Main() 
{ 
    DirectoryInfo info = new DirectoryInfo(@"C:\Personal"); 
    ListContents(info); 
} 

public void ListContents(DirectoryInfo info) 
{ 
    foreach(var dir in info.GetDirectories()) 
    { 
     ListContents(dir); 
    } 
    foreach(var file in info.GetFiles()) 
    { 
     Console.WriteLine(file.FullName); 
    } 
}