我想从不同的文件夹中读取很多文件。现在我问自己什么是最聪明的方式。现在我正在使用
DirectoryInfo directory = new DirectoryInfo(myPath);
FileInfo[] files = directory.GetFiles("*.txt");
所以我有一个包含所有文件的列表,我可以遍历它们(逐个阅读)。
这样好吗?有没有办法重新排序列表,以便我始终最顶层的最旧文件。这可能是一个很好的想法,因为我想开始阅读最旧的文件,最后是最新的文件。有什么想法吗?
答案 0 :(得分:6)
List<FileInfo> files = directory
.GetFiles("*.txt")
.OrderBy(f => f.LastWriteTime)
.ToList();
有关您可以订购的完整字段列表,请参阅FileInfo和FileSystemInfo。
这是VB.NET中的example
答案 1 :(得分:4)
您可以从目录中获取文件,然后按创建日期对其进行排序:
DirectoryInfo info = new DirectoryInfo(myPath);
FileInfo[] files = info.GetFiles("*.txt").OrderBy(f => f.CreationTime).ToArray();
现在files
数组包含按创建日期排序的文件。通过改变OrderBy
中的lambda表达式,您可以按任何方式对它们进行排序:
OrderBy(f => f.LastWriteTime)
OrderBy(f => f.Name)
..等等。您的输出也 不是数组。它也可以转换为List<FileInfo>
,将最终ToArray()
替换为ToList()
。
如果您需要按相反的顺序排序,只需使用OrderByDescending(...)
即可获得所需的结果。
答案 2 :(得分:3)
在您的代码之后,执行以下操作:
FileInfo[] orderedFiles = files.OrderBy(x => x.CreationTime).ToArray();
..或者更好的是,首先将它们排序:
DirectoryInfo directory = new DirectoryInfo(myPath);
FileInfo[] files = directory.GetFiles("*.txt")
.OrderBy(x => x.CreationTime).ToArray();