我使用Directory.GetFiles从特定文件夹中获取文件。 默认情况下,该文件夹中的文件将按文件名排序。按字母顺序排列。我想按文件修改顺序获取文件。
我无法使用Directory.GetInfo,因为我想获取包含特定关键字的文件。 请让我知道如何根据修改日期对文件进行排序。 我使用以下代码
string[] arr1 = Directory.GetFiles("D:/TestFolder", "*"Test12"*");
非常感谢任何帮助。
答案 0 :(得分:11)
下面的内容
DirectoryInfo di = new DirectoryInfo("D:\\TestFolder");
FileSystemInfo[] files = di.GetFileSystemInfos();
var orderedFiles = files.Where(f=>f.Name.StartsWith("Test12"))
.OrderBy(f => f.CreationTime)
.ToList();
您可以根据需要使用任何字符串函数替换f.Name.StartWith
(.Contains
等)
您可以将f => f.CreationTime
替换为f.LastWriteTime
以获取修改时间,但请记住,从Windows Vista开始,默认情况下上次访问时间不会更新。这是为了提高文件系统性能
答案 1 :(得分:6)
如果您更改为目录信息,则可以执行
FileInfo[] files = new DirectoryInfo("path")
.GetFiles("filter")
.OrderBy(f => f.CreationTime)
.ToArray();
修改强>
看到你想要修改日期,可以用f.LastWriteTime代替
答案 2 :(得分:0)
试试这个方法。它会起作用...
string path = "C:\\Users", FileName="YourFileName";
DirectoryInfo direct= new DirectoryInfo(path);
FileInfo[] files = direct.GetFiles();
Array.Sort(files , (x, y) => StringComparer.OrdinalIgnoreCase.Compare(x.CreationTime, y.CreationTime));
files = Array.FindAll(files , a => a.FullName.Contains(FileName) == true);
foreach(var file in files){
// do what you want..
Console.WriteLine(file.FullName);
}