0

I'd like to browse a directory and get all files with their sizes , names and urls. I did like this :

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

i count the number of files in a directory but the problem when i have other directories inside it , how can i do to get all files and it caracteristics?

4

2 回答 2

1

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

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

对于您的具体问题,使用例如GetFiles获取目录下所有文件的信息:

var di=new DirectoryInfo(somePath);
var allFiles=di.GetFiles("*",SearchOption.AllDirectories);
foreach(var file in allFiles)
{
    Console.WriteLine("{0} {1}",file.Name,file.Length);
}

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

于 2013-05-30T12:35:13.350 回答
0

这应该递归遍历所有文件

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);
        }
于 2013-05-30T12:33:41.913 回答