跟踪最近使用的文件和文件夹

重要的应用程序接口(API)

通过将文件添加到应用最近使用的列表(MRU),跟踪用户经常访问的文件。 该平台根据上次访问项的时间对项目进行排序,并在达到列表的 25 项限制时删除最旧的项,从而为你管理 MRU。 所有应用都有自己的 MRU。

应用的 MRU 由 StorageItemMostRecentlyUsedList 类表示,该类可以通过静态属性 StorageApplicationPermissions.MostRecentlyUsedList 获取。 MRU 项存储为 IStorageItem 对象,因此可以将 StorageFile 对象(表示文件)和 StorageFolder 对象(表示文件夹)添加到 MRU。

注释

 有关完整示例,请参阅 文件选取器示例文件访问示例

先决条件

将选取的文件添加到 MRU

  • 用户选取的文件通常是他们反复返回的文件。 因此,请考虑在选取文件后立即将其添加到应用的 MRU 中。 操作方法如下。

    Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();
    
    var mru = Windows.Storage.AccessCache.StorageApplicationPermissions.MostRecentlyUsedList;
    string mruToken = mru.Add(file, "profile pic");
    

    StorageItemMostRecentlyUsedList.Add 重载。 在本示例中,我们使用 Add(IStorageItem,String), 以便我们可以将元数据与文件相关联。 通过设置元数据,可以记录项的目的,例如“个人资料图片”。 还可以通过调用 Add(IStorageItem)将文件添加到 MRU,而无需元数据。 将项添加到 MRU 时,该方法将返回唯一标识的字符串,称为令牌,用于检索项。

小窍门

需要令牌才能从 MRU 检索项目,因此请将其保存在某个位置。 有关应用数据的详细信息,请参阅 管理应用程序数据

使用令牌从 MRU 检索项

使用最适合要检索的项的检索方法。

下面介绍如何恢复刚刚添加的文件。

StorageFile retrievedFile = await mru.GetFileAsync(mruToken);

下面介绍如何迭代所有条目以先获取令牌然后获取项。

foreach (Windows.Storage.AccessCache.AccessListEntry entry in mru.Entries)
{
    string mruToken = entry.Token;
    string mruMetadata = entry.Metadata;
    Windows.Storage.IStorageItem item = await mru.GetItemAsync(mruToken);
    // The type of item will tell you whether it's a file or a folder.
}

AccessListEntryView 允许循环访问 MRU 中的条目。 这些条目是包含项的令牌和元数据的 AccessListEntry 结构。

在 MRU 已满的时候,从 MRU 中删除项

达到 MRU 的 25 项限制并尝试添加新项时,将自动删除访问时间最长的项目。 因此,您在添加新项目之前,永远不需要删除现有项目。

未来访问列表

此外,你的应用还有一个未来访问列表。 通过选取文件和文件夹,用户授予应用访问可能不可访问的项目的权限。 如果将这些项目添加到将来的访问列表,则当你的应用以后想要再次访问这些项目时,你将保留该权限。 应用的未来访问列表由 StorageItemAccessList 类表示,该类是从静态 StorageApplicationPermissions.FutureAccessList 属性获取的。

当用户选取某个项时,请考虑将其添加到未来访问列表以及 MRU。

  • FutureAccessList 最多可以容纳 1000 个项目。 请记住:它可以保存文件夹和文件,因此有很多文件夹。
  • 该平台永远不会替你从 FutureAccessList 中删除项。 达到 1000 项限制时,在使用 Remove 方法腾出空间之前,不能再添加其他项。