Как выполнять разнообразные запросы локальных данных приложения

[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]

Сведения о том, как приложение может использовать API файлов в пространстве имен Windows.Storage для выполнения форматированных запросов файлов в локально сохраняемых данных приложения.

Приложения Магазина Windows могут использовать API файлов для выполнения форматированных запросов в отношении содержимого, хранящегося в пользовательских библиотеках. Это особенно удобно для приложений, которые работают с форматированным содержимым — документами, почтой или мультимедиа. Мультимедиа может включать фотографии, музыку и видео. Эти запросы позволяют добавить такие функции, как полнотекстовый поиск и фильтрацию на основе запросов по метаданным, хранящимся в файлах.

Что необходимо знать

Технологии

Необходимые условия

  • Для индексации файлов в локально сохраняемых данных приложения используется Служба Windows Search.

Инструкции

Этап 1: Включение форматированных запросов для данных вашего приложения

Для поддержки форматированных запросов файлов используется Служба Windows Search, которая индексирует эти файлы. Обычно файлы в локально сохраняемых данных приложения не индексированы. Это связано с тем, что индексирование требует затрат, которые излишни, если приложению не нужна поддержка форматированных запросов.

Чтобы включить индексирование файлов в данных приложения, необходимо создать папку indexed в папке данных приложения. Затем сохраните в этой папке содержимое, которое вы хотите индексировать. Служба Windows Search индексирует содержимое файлов, а также метаданные в этой папке indexed и во всех вложенных в нее папках.

JJ835814.wedge(ru-ru,WIN.10).gifВключение индексирования файлов, сохраняемых в данных приложения

  1. Спланируйте структуру папки indexed, находящуюся в каталоге localFolder. Вот несколько правил, касающихся папок indexed и localFolder.

    • Папка indexed должна создаваться в корне каталога localFolder.

    • Служба Windows Search индексирует содержимое этой папки и свойства файлов. То есть Служба Windows Search индексирует все файлы, локально сохраненные в этой папке или в любых вложенных в нее папках.

      Служба Windows Search поддерживает полнотекстовое индексирование и поиск по таким форматам файлов, как HTML, PDF, XML и RTF, по форматам файлов Microsoft Office и многим другим форматам. Сведения о фильтрах для Службы Windows Search см. в разделе Обработчики фильтров, поставляемых с Windows.

    • На одно приложение выделяется только одна папка indexed.

    • Имя папки indexed определяется без учета регистра.

    • В API среды выполнения Windows папка данных приложения называется localFolder, но на физическом жестком диске она имеет имя LocalState. Чтобы получить доступ к этой папке для тестирования, используйте следующий путь:

      %user%\ AppData\Local\Packages\%packageName%\LocalState
      
    • Глубина вложенности в папке indexed может быть достаточно большой, но API Windows не допускает, чтобы полная длина пути к файлу превышала значение MAX_PATH (260 символов). Поэтому необходимо убедиться в том, что длина пути к файлам или папкам в папке indexed не превышает этого ограничения. Дополнительные сведения о MAX_PATH см. в разделе Ограничение максимальной длины пути.

    • Подобно тому, как Служба Windows Search индексирует другие расположения, она индексирует только локально сохраненные данные. Другими словами, индексируются только файлы, локально сохраняемые в папке indexed или во вложенных в нее папках.

  2. Создайте папку indexed в папке localFolder. Создать папку indexed в процессе установки невозможно. Ее можно создать только во время работы приложения. Ниже приведен фрагмент кода, показывающий, как создать папку indexed во время первого запуска приложения:

    
    Windows.Storage.ApplicationData.current.localFolder.createFolderAsync("indexed", 
        Windows.Storage.CreationCollisionOption.openIfExists).then(
                    function (result) {
                       //your code here
                    });
    
  3. Сохраните ваши файлы и папки в папке indexed. Для хранения файлов и папок используйте StorageFolder или IStorageFolder. Все файлы и папки, сохраненные в этой папке indexed, затем можно будет использовать для форматированных запросов с помощью API файлов в пространстве имен Windows.Storage.

Этап 2: Получение индексированного содержимого

После того, как Служба Windows Search проиндексирует данные приложения, оно может получить данные через API файлов в пространстве имен Windows.Storage. Например, чтобы выполнить запросы, используйте методы CreateFileQuery или CreateFolderQuery из StorageFolder, которые представляют папку indexed или папки, вложенные в папку indexed.

Связанные разделы

Windows.Storage

Служба Windows Search

StorageFolder

IStorageFolder

ApplicationData.localFolder

IFilter