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

Важные API

Отслеживайте файлы, к которым пользователь обращается часто, добавляя их в последний используемый список приложений (MRU). Платформа управляет MRU для вас путем сортировки элементов на основе последнего доступа и путем удаления самого старого элемента при достижении ограничения на 25 элементов списка. У всех приложений есть собственный MRU.

MRU приложения представлен классом служба хранилища ItemMostRecentlyUsedList, который вы получаете из статического свойства служба хранилища ApplicationPermissions.MostRecentlyUsedList. Элементы MRU хранятся в виде объектов I служба хранилища Item, поэтому в MRU можно добавлять оба объекта служба хранилища File (которые представляют файлы) и служба хранилища Folder (представляющие папки).

Примечание.

 Полные примеры см. в примере средства выбора файлов и примера доступа к файлам.

Необходимые компоненты

Добавление выбранного файла в 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(I служба хранилища Item, String), чтобы можно было связать метаданные с файлом. Настройка метаданных позволяет записать назначение элемента, например "профиль" pic. Вы также можете добавить файл в MRU без метаданных, вызвав add(I служба хранилища Item). При добавлении элемента в 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, приложение также имеет список будущих доступа. Выбрав файлы и папки, пользователь предоставляет приложению разрешение на доступ к элементам, которые могут быть недоступны в противном случае. Если вы добавите эти элементы в список будущих доступа, вы сохраните это разрешение, когда приложение хочет получить доступ к этим элементам позже. Список будущих доступа приложения представлен классом служба хранилища ItemAccessList, полученным из статического свойства служба хранилища ApplicationPermissions.FutureAccessList.

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

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