我有一个文件夹,其中包含以数字 1、2、3 命名的图像文件...
我如何从 1 开始按顺序读取图像文件名,直到结束(无论它是什么数字)。
问问题
3722 次
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 回答