【问题标题】:how to read files in folder in ascending order?如何按升序读取文件夹中的文件?
【发布时间】:2012-10-16 12:39:33
【问题描述】:

我有一个文件夹,其中包含以数字 1、2、3 命名的图像文件...
我如何从 1 开始按顺序读取图像文件名直到结束(无论它是什么数字)。

【问题讨论】:

    标签: c#


    【解决方案1】:

    您可以在文件数组上使用OrderBy

    DirectoryInfo dir = new DirectoryInfo(@"C:\yourfolder");
    FileInfo[] files = dir.GetFiles();
    //User Enumerable.OrderBy to sort the files array and get a new array of sorted files
    FileInfo[] sortedFiles = files.OrderBy(r => r.Name).ToArray();
    

    对于具有只是数字(int)名称的文件号尝试:

    FileInfo[] sortedFiles = files
                              .OrderBy(r => int.Parse(Path.GetFileNameWithoutExtension(r.Name)))
                              .ToArray();
    

    【讨论】:

    • 这将根据文本排序。 IE。 1,10,11...2,20 这样。您应该将其转换为整数,然后按顺序排序。
    • r => Convert.ToInt32(Path.GetFileNameWithoutExtension(r.Name))怎么样
    • @NikhilAgrawal,由于文件扩展名,它会引发异常
    【解决方案2】:

    Habib 的回答是正确的,但请注意,您不会按数字顺序获得结果(即您将在处理 2.png 之前处理 10.png)。按数字而不是字母顺序对文件名进行排序:

    foreach (string fileName in Directory.GetFiles(Environment.CurrentDirectory)
             .OrderBy((f) => Int32.Parse(Path.GetFileNameWithoutExtension(f1))))
    {
        // do something with filename
    }
    

    【讨论】:

    • 我想要做的是,我想按数字顺序读取文件,因为所有文件名都是数字格式。
    【解决方案3】:

    将所有文件名读入一个数组。按升序对数组元素进行排序。完成!

    【讨论】:

      【解决方案4】:

      使用Arraylist收集目录内的所有文件名并排序(它也适用于字母数字文件名

              ArrayList <String> dirFiles=new ArrayList<String>();
              File file = new File("DirectoryPath");
      
              File createdFile = null;
              String [] str=file.list();
              for(int j=0;j<str.length;j++){
                  dirFiles.add(str[j]);               
              }
      
              CustomComparator comparator = new CustomComparator();
              Collections.sort(dirFiles, comparator);
              for(String fileName: dirFiles){
                       Console.println(fileName);
               }
      

      【讨论】:

      • Console.Writeline 是您正在寻找的。在 c# 中有更简单的方法来实现这一点
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 2019-11-29
      • 1970-01-01
      • 2020-03-09
      • 2013-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多