如何检索目录中的文件列表,按名称排序
我试图从C#获取文件夹中所有文件的列表。 很容易:
Directory.GetFiles(folder)
但我需要按字母顺序排序结果,因为它们都是数字, 我需要知道目录中的最高数字 。 当然我可以把它们抓到一个数组/列表对象然后进行排序,但我想知道是否有一些filter/参数呢?
它们都以前导零命名。 喜欢:
00000000001.log 00000000002.log 00000000003.log 00000000004.log .. 00000463245.log 00000853221.log 00024323767.log
什么是最简单的方法? 我不需要获取其他文件,只需要“最大/最新”的数字。
var files = Directory.EnumerateFiles(folder) .OrderByDescending(filename => filename);
( EnumerateFiles
方法是.NET 4中的新方法,如果您使用的是早期版本,仍然可以使用GetFiles
)
编辑:如果您使用MaxBy
定义的MaxBy
方法,实际上您不需要对文件名进行排序:
var lastFile = Directory.EnumerateFiles(folder).MaxBy(filename => filename);
var files = from file in Directory.GetFiles(folder) orderby file descending select file; var biggest = files.First();
如果你真的是在最高数字之后并且这些日志文件的名称与你建议的一样,那么如何:
Directory.GetFiles(folder).Length
扩展@Thomas所说的,如果你只需要前X个文件,你可以这样做:
int x = 10; var files = Directory.EnumerateFiles(folder) .OrderByDescending(filename => filename) .Take(x);