Как выполнять разнообразные запросы локальных данных приложения
[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]
Сведения о том, как приложение может использовать API файлов в пространстве имен Windows.Storage для выполнения форматированных запросов файлов в локально сохраняемых данных приложения.
Приложения Магазина Windows могут использовать API файлов для выполнения форматированных запросов в отношении содержимого, хранящегося в пользовательских библиотеках. Это особенно удобно для приложений, которые работают с форматированным содержимым — документами, почтой или мультимедиа. Мультимедиа может включать фотографии, музыку и видео. Эти запросы позволяют добавить такие функции, как полнотекстовый поиск и фильтрацию на основе запросов по метаданным, хранящимся в файлах.
Что необходимо знать
Технологии
Необходимые условия
- Для индексации файлов в локально сохраняемых данных приложения используется Служба Windows Search.
Инструкции
Этап 1: Включение форматированных запросов для данных вашего приложения
Для поддержки форматированных запросов файлов используется Служба Windows Search, которая индексирует эти файлы. Обычно файлы в локально сохраняемых данных приложения не индексированы. Это связано с тем, что индексирование требует затрат, которые излишни, если приложению не нужна поддержка форматированных запросов.
Чтобы включить индексирование файлов в данных приложения, необходимо создать папку indexed в папке данных приложения. Затем сохраните в этой папке содержимое, которое вы хотите индексировать. Служба Windows Search индексирует содержимое файлов, а также метаданные в этой папке indexed и во всех вложенных в нее папках.
Включение индексирования файлов, сохраняемых в данных приложения
Спланируйте структуру папки 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 или во вложенных в нее папках.
Создайте папку indexed в папке localFolder. Создать папку indexed в процессе установки невозможно. Ее можно создать только во время работы приложения. Ниже приведен фрагмент кода, показывающий, как создать папку indexed во время первого запуска приложения:
Windows.Storage.ApplicationData.current.localFolder.createFolderAsync("indexed", Windows.Storage.CreationCollisionOption.openIfExists).then( function (result) { //your code here });
Сохраните ваши файлы и папки в папке indexed. Для хранения файлов и папок используйте StorageFolder или IStorageFolder. Все файлы и папки, сохраненные в этой папке indexed, затем можно будет использовать для форматированных запросов с помощью API файлов в пространстве имен Windows.Storage.
Этап 2: Получение индексированного содержимого
После того, как Служба Windows Search проиндексирует данные приложения, оно может получить данные через API файлов в пространстве имен Windows.Storage. Например, чтобы выполнить запросы, используйте методы CreateFileQuery или CreateFolderQuery из StorageFolder, которые представляют папку indexed или папки, вложенные в папку indexed.