如何按升序读取文件夹中的文件?

时间:2012-10-16 04:24:45

标签: c#

我的文件夹包含以编号1,2,3命名的图像文件...如何按顺序读取图像文件名,从1开始直到结束(无论是什么编号)。 / p>

4 个答案:

答案 0 :(得分:8)

您可以在文件阵列上使用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();

答案 1 :(得分: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
}

答案 2 :(得分:1)

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

答案 3 :(得分:-2)

使用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);
         }
相关问题