7

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

4

4 回答 4

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();
于 2012-10-16T04:29:29.163 回答
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
}
于 2012-10-16T04:32:26.263 回答
1

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

于 2012-10-16T04:28:29.010 回答
-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);
         }
于 2012-10-16T04:35:31.630 回答