Comment effectuer de riches requêtes sur les données locales d’une application

[ Cet article est destiné aux développeurs de Windows 8.x et Windows Phone 8.x qui créent des applications Windows Runtime. Si vous développez une application pour Windows 10, voir la Documentation ]

Découvrez comment une application peut utiliser les API de fichier dans l’espace de noms Windows.Storage pour effectuer de riches requêtes dans les fichiers au sein des données stockées en local de l’application.

Les applications du Windows Store peuvent utiliser les API de fichier pour effectuer de riches requêtes sur le contenu stocké dans les bibliothèques utilisateur. Ceci est particulièrement utile dans le cas des applications qui gèrent du contenu riche tel que des documents, du courrier ou du contenu multimédia. Ce dernier peut comporter des photos, de la musique et des vidéos. Vous pouvez utiliser ces requêtes pour ajouter des fonctionnalités comme la recherche en texte intégral et le filtrage basé sur des requêtes sur les métadonnées stockées dans les fichiers.

Ce que vous devez savoir

Technologies

Prérequis

Instructions

Étape 1: Autoriser les requêtes riches pour vos données d’application

Pour fournir de riches requêtes sur les fichiers, vous utilisez le service de recherche Windows pour indexer ces fichiers. En règle générale, les fichiers présents dans les données stockées en local d’une application ne sont pas indexés. Cette opération implique en effet un coût en termes de performances qu’il vaut mieux éviter lorsque l’application ne nécessite pas de fonctions de requêtes riches.

Vous devez créer un dossier nommé indexed sous le dossier des données de l’application. Ensuite, vous y stockez le contenu à indexer. Le service de recherche Windows indexe le contenu et les métadonnées des fichiers dans ce dossier indexed et dans tous les sous-dossiers.

JJ835814.wedge(fr-fr,WIN.10).gifPour activer l’indexation de fichiers dans les données d’application

  1. Préparez le dossier indexed qui se situe sous le dossier localFolder. Voici quelques règles relatives à indexed et localFolder :

    • Le dossier indexed doit être créé sous la racine localFolder.

    • Le service de recherche Windows indexe en profondeur les propriétés et le contenu des fichiers dans ce dossier. En d’autres termes, le service de recherche Windows indexe tous les fichiers stockés localement dans ce dossier ou ses sous-dossiers, notamment tous les niveaux de sous-dossiers.

      Le service de recherche Windows prend en charge l’indexation de texte intégral et la recherche des formats de fichiers HTML, PDF, XML et RTF, les formats des fichiers Microsoft Office, entre autres. Pour plus d’informations sur les filtres pour le service de recherche Windows, voir Gestionnaires de filtres livrés avec Windows.

    • Vous ne pouvez avoir qu’un dossier indexed par application.

    • Le nom de dossier indexed ne respecte pas la casse.

    • Même si le dossier de données d’application est nommé localFolder dans l’API Windows Runtime, il porte le nom LocalState sur le disque dur physique. Pour accéder à ce dossier à des fins de test, utilisez le chemin d’accès :

      %user%\ AppData\Local\Packages\%packageName%\LocalState
      
    • La structure des dossiers sous le dossier indexed peut être profonde, mais l’API Windows interdit les chemins d’accès à un fichier ou dossier plus longs que MAX_PATH, soit 260 caractères. Par conséquent, vous devez vous assurer que les fichiers ou dossiers sous le dossier indexed ne dépassent pas cette limite. Pour plus d’informations sur MAX_PATH, voir Limitation de la longueur maximale du chemin d’accès.

    • Tout comme le service de recherche Windows indexe d’autres emplacements, il indexe uniquement les données stockées localement. En d’autres termes, seuls les fichiers stockés localement dans le dossier indexed ou ses sous-dossiers sont indexés.

  2. Créez le dossier indexed sous le dossier localFolder. Vous ne pouvez pas créer le dossier indexed au cours de l’installation. Vous pouvez le créer uniquement lors de l’exécution de l’application. Voici un extrait de code qui montre comment créer le dossier indexed lorsque l’application est exécutée pour la première fois :

    
    Windows.Storage.ApplicationData.current.localFolder.createFolderAsync("indexed", 
        Windows.Storage.CreationCollisionOption.openIfExists).then(
                    function (result) {
                       //your code here
                    });
    
  3. Stockez vos fichiers et dossiers dans ce dossier indexed. Vous pouvez utiliser StorageFolder ou IStorageFolder pour stocker les fichiers et dossiers. Tous les fichiers et dossiers que vous stockez dans ce dossier indexed seront ensuite disponibles pour des requêtes riches avec les API de fichier dans l’espace de noms Windows.Storage.

Étape 2: Extraire le contenu indexé

Une fois que le service de recherche Windows a indexé les données d’application, l’application peut extraire les données via les API de fichier dans l’espace de noms Windows.Storage. Par exemple, pour effectuer des requêtes, utilisez CreateFileQuery ou CreateFolderQuery à partir d’un StorageFolder qui représente le dossier indexed ou tout dossier enfant sous le dossier indexed.

Rubriques associées

Windows.Storage

Service de recherche Windows

StorageFolder

IStorageFolder

ApplicationData.localFolder

IFilter