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

3

你好,我正在创建一个应用程序,想知道一个文件夹下的每个文件。也就是说,如何遍历根目录并至少访问一次每个文件。

3个回答

5
如果您只需要一次列出它们所有,可以直接使用包含选项的GetFiles重载。
string[] filePaths = Directory.GetFiles(@"c:\MyDir\", "*.*", SearchOption.AllDirectories);

显然,在 Web 应用程序中,您不太可能访问 "c:\MyDir",因此,您可以使用变量来存储 MapPath 调用的结果,如下所示:

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

4
使用 Directory.EnumerateFiles(String, String, SearchOption) 函数,并使用 SearchOption.AllDirectories 参数:
foreach (var file in Directory.EnumerateFiles(@"c:\", "*.txt", SearchOption.AllDirectories))
{
    // Do stuff here
}

EnumerateFiles方法比GetFiles方法快得多,因为它实际上只返回枚举器,并且直到读取文件时才会访问它们。


框架中肯定有一些可以为你完成这项工作的东西。但是这只会返回完整路径。如果您想获取表示文件属性的对象,则需要进行额外的工作。 - NerdFury

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);
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接