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