我正在使用 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);
}
注意:您可能需要Path.GetFileNameWithoutExtension
在调用 int.Parse 之前使用,并且您可能还想使用它int.TryParse
。
这将为您解决问题。按创建时间排序
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;
请参阅Directory.GetFiles() 上的 MSDN 页面。特别注意这一点:
返回文件名的顺序不保证;如果需要特定的排序顺序,请使用 Sort() 方法。
您应该获取文件名并自己对它们进行排序。
通常文件按名称顺序返回,但在这种情况下,顺序将是 0,1,11,12,...,2,20,21,...3 等。如果按名称排序,您可以看到这一点在 Windows 资源管理器中。正如其他人已经建议的那样,最好的办法是用前导零填充。即 00、01、02、03、...、10、11、12 等。