[英]Get List of StorageFile ordered by last modified date
我正在尝试完成一项非常简单的任务,即以修改日期的降序从StorageFolder
获取StorageFile
列表。
当前代码检索列表但未排序
Task<IReadOnlyList<StorageFile>> task = folder.Result.GetFilesAsync().AsTask();
task.Wait();
return task.Result.Select(z => z.Name).ToArray();
StorageFile具有DateCreated
的属性,但DateModified没有类似的属性。
我研究了使用GetFilesAsync(Windows.Storage.Search.CommonFileQuery.OrderByDate)
但这仅适用于Windows库中的文件。
在WinRT中,您需要调用StorageFile.GetBasicPropertiesAsync 。 您将获得的BasicProperties对象具有dateModified属性,可以将其用于排序。 您可以在“ 文件访问”示例的方案6中找到代码片段。
您也可以使用自定义文件查询而不是常见查询之一来实现您的目标。 为此,我建议您看一下Programmatic文件搜索示例 ,并在我的免费电子书第11章“ 使用HTML,CSS和JavaScript编程Windows Store应用程序,第二版”中讨论这些内容(不要让JS专注于您-所有WinRT讨论都完全适用于所有语言。
如果您遇到这种情况,可以通过初始化一个常见的自定义查询,然后更改排序顺序来创建一个简单的自定义查询。 为此,我对上述示例的场景1进行了修改,替换了第42行:
// initialize queryOptions using a common query
QueryOptions queryOptions = new QueryOptions(CommonFileQuery.DefaultQuery, fileTypeFilter);
// clear all existing sorts
queryOptions.SortOrder.Clear();
// add descending sort by date modified
SortEntry se = new SortEntry();
se.PropertyName = "System.DateModified";
se.AscendingOrder = false;
queryOptions.SortOrder.Add(se);
在您的代码中,只需调用folder.CreateFileQueryWithOptions(queryOptions),然后调用queryResult.GetFilesAsync,结果列表应该正是您想要的。
StorageFileQueryResult queryResult = folder.CreateFileQueryWithOptions(queryOptions);
IReadOnlyList<StorageFile> files = await queryResult.GetFilesAsync();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.