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

C# 遍历根目录并获取其中的所有文件?,c#,asp.net,C#,Asp.net,嗨 我正在创建一个应用程序,我想知道该文件夹下的每个文件。如何遍历根目录并获取每次访问的每个文件的列表。使用带有搜索选项的函数。所有目录: foreach (var file in Directory.EnumerateFiles(@"c:\", "*.txt", SearchOption.AllDirectories)) { // Do stuff here } EnumerateFiles方法比GetFiles方法快得多,因为它实际上只返回枚举数,并且在文件变为红色之前不会访问文件

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

使用带有
搜索选项的函数。所有目录

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

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

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

string[] filePaths = Directory.GetFiles(@"c:\MyDir\", "*.*", SearchOption.AllDirectories);
显然,在web应用程序中,您可能无法访问“c:\MyDir”,因此您可以用保存MapPath调用结果的变量替换它,如下所示:

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

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

我想框架中会有一些东西可以帮到你。但这只返回完整路径。如果要获取表示文件属性的对象,则需要额外的工作。