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

时间:2011-05-18 13:40:23

标签: c# asp.net

喜 我正在创建一个应用程序,我想知道该文件夹下的每个文件.i.e。我如何遍历根目录并让列表中的每个文件访问一次。

3 个答案:

答案 0 :(得分:5)

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

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

显然,在Web应用程序中,您可能无法访问“c:\ MyDir”,因此您可以将其替换为包含MapPath调用结果的变量,如下所示:

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

答案 1 :(得分:3)

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

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

EnumerateFiles方法比GetFiles方法快,因为它实际上只返回枚举器,并且在它们为红色之前实际上不会访问这些文件。

答案 2 :(得分:0)

您可以使用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);
    }
}