【问题标题】:Getting the name,size and url of all files from a directory with c# code使用 c# 代码从目录中获取所有文件的名称、大小和 url
【发布时间】:2013-05-26 00:32:19
【问题描述】:

我想浏览一个目录并获取所有文件及其大小、名称和网址。 我确实喜欢这样:

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

我计算了一个目录中的文件数量,但是当我在其中有其他目录时出现问题,我该如何获取所有文件及其特征?

【问题讨论】:

标签: c# file io directory


【解决方案1】:

这应该递归遍历所有文件

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

【讨论】:

    【解决方案2】:

    这是许多其他类似问题的重复。如果要获取扩展文件信息,请使用 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 语句中使用它来一次处理每个文件,如果您愿意,可以通过跳出循环来停止迭代。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-24
      • 1970-01-01
      • 1970-01-01
      • 2014-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多