繁体   English   中英

获取按上次修改日期排序的StorageFile列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM