使用c#代码从目录中获取所有文件的名称、大小和url

使用c#代码从目录中获取所有文件的名称、大小和url,c#,file,io,directory,C#,File,Io,Directory,我想浏览一个目录,获取所有文件的大小、名称和URL。 我喜欢这样: int i = 0; foreach (string sFileName in Directory.GetFiles(Path.Combine(@"C:\Projets", path2))) { i++; } 我计算一个目录中的文件数,但问题是,当目录中有其他目录时,如何获取所有文件

我想浏览一个目录,获取所有文件的大小、名称和URL。 我喜欢这样:

 int i = 0;
                 foreach (string sFileName in Directory.GetFiles(Path.Combine(@"C:\Projets", path2)))
                 {
                     i++;
                 }

我计算一个目录中的文件数,但问题是,当目录中有其他目录时,如何获取所有文件及其特性?

这应该递归地遍历所有文件

foreach (string sFileName in Directory.EnumerateFiles(Path.Combine(@"C:\Projets", path2), "*.*", SearchOption.AllDirectories))
        {
            //Get file information here
            FileInfo f = new FileInfo(sFileName);
            Console.WriteLine("{0} - {1}", f.Length, f.Name);
        }

这是许多其他类似问题的重复。如果要获取扩展文件信息,请使用XxxInfo类,例如DirectoryInfo、FileInfo,而不是Directory和file类

此外,所有GetXXX或EnumerateXXX方法都具有SearchOption参数的重载,该参数允许您返回所有文件,而不仅仅是顶级目录的文件

对于您的特定问题,要获取目录下所有文件的信息,请使用,例如:


GetFiles和之间的区别在于GetFiles仅在检索目录下的所有文件后返回,这可能需要很长时间。EnumerateFiles返回一个迭代器,因此您可以在foreach语句中使用它一次处理每个文件,如果您愿意,可以通过中断循环来停止迭代。

将所有这些放在方法中的可能重复项执行递归调用,直到最后没有文件为止
var di=new DirectoryInfo(somePath);
var allFiles=di.GetFiles("*",SearchOption.AllDirectories);
foreach(var file in allFiles)
{
    Console.WriteLine("{0} {1}",file.Name,file.Length);
}