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

C# 如何按升序读取文件夹中的文件?,c#,C#,我有一个文件夹,其中包含以数字1、2、3命名的图像文件…如何按顺序读取图像文件名,从1开始到结尾(无论是什么数字)。将所有文件名读取到一个数组中。按升序对数组元素进行排序。完成了 您可以在文件数组上使用 DirectoryInfo dir = new DirectoryInfo(@"C:\yourfolder"); FileInfo[] files = dir.GetFiles(); //User Enumerable.OrderBy to sort the files array and ge

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

将所有文件名读取到一个数组中。按升序对数组元素进行排序。完成了

您可以在文件数组上使用

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

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

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

使用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);
         }
ArrayList dirFiles=new ArrayList();
File File=新文件(“DirectoryPath”);
文件createdFile=null;
字符串[]str=file.list();

对于(int j=0;j这将根据文本进行排序。例如,1,10,11…2,20。您应该将其转换为整数,然后按进行排序。如何
r=>convert.ToInt32(Path.GetFileNameWithoutExtension(r.Name))
@NikhilAgrawal,它会引发异常,因为文件扩展解决方案。Writeline是您正在寻找的。在c#中有更简单的方法来实现这一点,我想做的是,我想按数字顺序读取文件,因为所有文件名都是数字格式的。