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

重要的 API

通过将用户经常访问的文件添加到你的应用的最近使用列表 (MRU) 中来跟踪这些文件。 该平台会为你管理 MRU,它会根据各个项的上次访问时间对它们进行排序,并在列表中的项超过 25 个的限制时删除最旧的项。 所有应用都有其各自的 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 的 25 项这一限制并尝试添加新项时,会自动删除最早访问的项。 因此,添加新项之前无需删除任何项。

未来访问列表

除了 MRU,你的应用还具有一个未来访问列表。 通过选择文件和文件夹,你的用户向你的应用授予访问项的权限(若未授权可能无法访问)。 如果将这些项添加到你的未来访问列表,然后当你的应用需要以后重新访问这些项时将保留该权限。 你的应用的未来访问列表由 StorageItemAccessList 类表示,你能从静态 StorageApplicationPermissions.FutureAccessList 属性获取该类。

当用户选取一个项时,请考虑将它添加到你的未来访问列表以及 MRU 中。

  • FutureAccessList 最多可保留 1000 个项。 请记住:它可以保留文件夹以及文件,所以有很多文件夹。
  • 平台永远不会为你从 FutureAccessList 删除项。 当你达到 1000 个项的限制时,你就无法添加另一个项,直到你采用 Remove 方法腾出空间。