文件未按顺序列出
本文关键字:顺序 文件 | 更新日期: 2023-09-27 18:32:04
>我正在使用StreamWriter类创建一堆按顺序命名的文件,从0到30。当我尝试循环读取它们时,当我比较两个文件时,0 与 10 进行比较,然后与 11 进行比较,依此类推,直到 19,然后 0 与 2 进行比较,然后 21 依此类推。有什么方法可以让它将 0 与 1 进行比较,然后与 2 进行比较,依此类推?我正在使用 Directory.GetFiles() 读取文件;
谢谢!
Directory.GetFiles();
只返回一个字符串数组,因此很容易对它们进行重新排序
例如
var files = Directory.GetFiles();
var orderedFiles = files.OrderBy(s=>int.Parse( s));
foreach (string s in orderedFiles)
{
Console.WriteLine(s);
}
注意:您可能需要在调用 int 之前使用 Path.GetFileNameWithoutExtension
。解析,您可能还想改用int.TryParse
。
请参阅 Directory.GetFiles() 上的 MSDN 页面。特别要注意这一点:
不保证返回文件名的顺序;如果需要特定的排序顺序,请使用 Sort() 方法。
您应该获取文件名并自己对其进行排序。
通常文件按名称顺序返回,但在这种情况下,顺序将是 0,1,11,12,...,2,20,21,...3等如果在 Windows 资源管理器中按名称排序,则可以看到此信息。正如其他人已经建议的那样,你最好的选择是用前导零填充。即 00、01、02、03、...、10、11、12 等。
这将为您解决问题。按创建时间排序
System.IO.DirectoryInfo di = new System.IO.DirectoryInfo("YourDirectoryPath");
System.IO.FileInfo[] files = di.GetFiles();
var sortedFiles = from f in files
orderby f.CreationTime ascending
select f;