Comment obtenir des groupes de fichiers à l’aide de requêtes (applications de style Metro en JavaScript et HTML)

[Cette documentation est une version préliminaire qui peut faire l’objet de modifications.]

Utilisez des requêtes pour obtenir des groupes de fichiers correspondants aux critères que vous indiquez à partir d’un emplacement donné (par exemple, un dossier, un groupe de fichiers, une bibliothèque, un périphérique ou un emplacement réseau).

Prérequis

Obtenir le dossier conteneur

Si vous voulez obtenir une liste du contenu d’un dossier particulier, vous devez d’abord obtenir le dossier.

L’exemple FolderEnumeration sur la page d’accueil des exemples d’applications de style Metro obtient la bibliothèque d’images :

var picturesLibrary = Windows.Storage.KnownFolders.picturesLibrary;

Dans l’exemple précédent, nous utilisons la classe KnownFolders pour obtenir la bibliothèque d’images (en tant qu’objet StorageFolder). Vous pouvez utiliser les propriétés KnownFolders pour obtenir des objets qui représentent un certain nombre de ressources utilisateur, telles que bibliothèques, périphériques ou emplacements réseau.

Important  Pour pouvoir utiliser une propriété KnownFolders pour accéder à une bibliothèque, un périphérique ou un emplacement réseau, la fonctionnalité correspondante doit figurer dans le manifeste de l’application. Pour plus d’informations sur les fonctionnalités, voir Accès aux ressources utilisateur avec Windows Runtime et Démarrage rapide : utilisation des fichiers.

Créer une requête de dossier pour organiser les fichiers selon vos critères

Lorsque vous créez une requête de dossier à partir d’un dossier, les fichiers contenus dans ce dernier et ses sous-dossiers sont organisés en groupes selon les critères de votre choix. Les groupes obtenus sont des groupes virtuels qui ont les mêmes fonctionnalités que n’importe quel dossier du système de fichiers. Vous pouvez donc obtenir et traiter les fichiers de ces groupes comme vous le souhaitez.

L’exemple FolderEnumeration sur la page d’accueil des exemples d’applications de style Metro crée une requête de dossier qui regroupe les images de la bibliothèque d’images en fonction du mois où elles ont été prises ou créées :

var query = picturesLibrary.createFolderQuery(Windows.Storage.Search.CommonFolderQuery.groupByMonth);

Comme le montre l’exemple précédent, vous pouvez appeler la méthode createFolderQuery(query) pour votre dossier. Cette méthode crée une requête de dossier (StorageFolderQueryResult) qui organise les fichiers du dossier et de ses sous-dossiers dans des dossiers virtuels selon la valeur CommonFolderQuery que vous indiquez. Dans l’exemple, nous avons choisi de regrouper les fichiers image du dossier picturesLibrary dans des dossiers virtuels en fonction du mois (CommonFolderQuery.groupByMonth) où les images ont été prises ou créées.

Vous pouvez aussi créer des requêtes de dossier en appelant la méthode createFolderQuery() ou createFolderQueryWithOptions.

Obtenir la liste des dossiers virtuels à l’aide de la requête

L’exemple FolderEnumeration sur la page d’accueil des exemples d’applications de style Metro utilise query pour obtenir la liste des dossiers virtuels :

query.getFoldersAsync().then(function (monthList) {
    monthList.forEach(function (month) { 

Comme le montre l’exemple précédent, vous pouvez appeler la méthode getFoldersAsync() pour votre requête de dossier afin d’obtenir une liste de vos dossiers virtuels. Utilisez la méthode then pour définir une fonction qui traite votre liste. Dans l’exemple, notre requête renvoie une liste des dossiers virtuels représentant des mois (monthList). Nous traitons ensuite cette liste en appelant monthList.forEach et en définissant une fonction chargée de traiter chaque dossier month.

Obtenir la liste des fichiers contenus dans le dossier virtuel

L’exemple FolderEnumeration sur la page d’accueil des exemples d’applications de style Metro utilise le dossier month pour obtenir la liste des images qui ont été prises ou créées au cours du mois représenté par ce dossier :

        var tempMonthName = month.name; 
        month.getFilesAsync().then(function (files) {

Astuce  Vous avez la possibilité d’enregistrer les informations relatives à votre dossier virtuel (month) afin de pouvoir les réutiliser ultérieurement. Dans l’exemple précédent, nous avons enregistré le nom du dossier virtuel (month.name) dans tempMonthName, car nous en aurons besoin lors du traitement de la liste d’images (files).

Utilisez la méthode then pour définir une fonction qui traite la liste des fichiers que vous avez reçue. Pour en savoir plus sur l’utilisation de votre liste de fichiers, voir Comment obtenir une liste des fichiers et dossiers situés dans un dossier ou l’exemple FolderEnumeration disponible sur la page d’accueil des exemples d’applications de style Metro.

Terminer l’exemple

// Get folder
var picturesLibrary = Windows.Storage.KnownFolders.picturesLibrary; 

// Create query
var query = picturesLibrary.createFolderQuery(Windows.Storage.Search.CommonFolderQuery.groupByMonth); 

// Get virtual folders from query
query.getFoldersAsync().then(function (monthList) { 
    monthList.forEach(function (month) {
 
        var tempMonthName = month.name;
        // Get files from virtual folder 
        month.getFilesAsync().then(function (files) { 
            // Then perform tasks with retrieved files
        }); 
    }); 
});

Rubriques associées

Accès aux données des fichiers

Comment obtenir une liste des fichiers et dossiers situés dans un dossier

Démarrage rapide : utilisation des fichiers

Accès aux ressources utilisateur à l’aide du Windows Runtime

Page d’accueil des exemples d’applications de style Metro

Référence

Windows.Storage.KnownFolders class

Windows.Storage.StorageFile class

Windows.Storage.StorageFolder class

Windows.Storage.Search.CommonFolderQuery enum

Windows.Storage.Search.StorageFolderQueryResult class