Поделиться через


Отслеживание недавно использовавшихся файлов и папок

Важные 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), чтобы можно было связать метаданные с файлом. Настройка метаданных позволяет записать назначение элемента, например "профиль" pic. Вы также можете добавить файл в MRU без метаданных, вызвав Add(IStorageItem). При добавлении элемента в 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 при заполнении

Когда достигнуто ограничение на 25 элементов MRU и вы пытаетесь добавить новый элемент, доступ к которому был достигнут самый длинный период назад, автоматически удаляется. Таким образом, вам никогда не нужно удалять элемент перед добавлением нового элемента.

Список будущих доступа

Кроме MRU, приложение также имеет список будущих доступа. Выбрав файлы и папки, пользователь предоставляет приложению разрешение на доступ к элементам, которые могут быть недоступны в противном случае. Если вы добавите эти элементы в список будущих доступа, вы сохраните это разрешение, когда приложение хочет получить доступ к этим элементам позже. Список будущих доступа приложения представлен классом StorageItemAccessList, полученным из статического свойства StorageApplicationPermissions.FutureAccessList.

Когда пользователь выбирает элемент, попробуйте добавить его в список будущих доступа, а также mrU.

  • FutureAccessList может содержать до 1000 элементов. Помните: он может хранить папки, а также файлы, поэтому это много папок.
  • Платформа никогда не удаляет элементы из FutureAccessList для вас. Когда вы достигнете ограничения на 1000 элементов, вы не сможете добавить другой, пока не удается освободить место с помощью метода Remove .