【发布时间】:2012-10-16 12:39:33
【问题描述】:
我有一个文件夹,其中包含以数字 1、2、3 命名的图像文件...
我如何从 1 开始按顺序读取图像文件名直到结束(无论它是什么数字)。
【问题讨论】:
标签: c#
我有一个文件夹,其中包含以数字 1、2、3 命名的图像文件...
我如何从 1 开始按顺序读取图像文件名直到结束(无论它是什么数字)。
【问题讨论】:
标签: c#
您可以在文件数组上使用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();
【讨论】:
r => Convert.ToInt32(Path.GetFileNameWithoutExtension(r.Name))怎么样
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);
}
【讨论】: