DirectoryInfo.GetFiles()排序问题

2020-12-10  本文已影响0人  虫小白

1,使用文件的某种属性排序

//按照文件创建时间排序
 DirectoryInfo directoryInfo=new DirectoryInfo(folderPath);
 FileInfo[] fileInfos= directoryInfo.GetFiles();
 fileInfos.OrderBy(f => f.CreationTime);

碰到的问题:
在文件夹中有名称分别为1-10的十个文件,在文件夹中按照名称排序时,顺序为1,2,3,...,10。
但使用默认排序或使用下面的代码按照文件名称排序时,

fileInfos.OrderBy(f => f.Name);

得到的顺序为:1,10,2,3,...9。
使用下面的方式可解决:

 DirectoryInfo directoryInfo=new DirectoryInfo(folderPath);
 FileInfo[] fileInfos= directoryInfo.GetFiles();
                 
 List<string> files=new List<string>();
 Array.Sort(fileInfos, (x1, x2) => int.Parse(Regex.Match(x1.Name, @"\d+").Value).CompareTo(int.Parse(Regex.Match(x2.Name, @"\d+").Value)));
 foreach (FileInfo file in fileInfos)
 {
        files.Add(file.FullName);
 }
上一篇 下一篇

猜你喜欢

热点阅读