Comment obtenir les fichiers et dossiers d’un emplacement particulier (applications de style Metro en JavaScript et HTML)

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

Obtenez les fichiers et dossiers d’un emplacement particulier, par exemple, un dossier, 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.

Obtenir la liste du contenu d’un dossier

L’exemple FolderEnumeration figurant sur la page d’accueil des exemples d’applications de style Metro obtient une liste des éléments contenus dans la bibliothèque d’images :

picturesLibrary.getItemsAsync().then(function (items) {

Comme le montre l’exemple précédent, vous pouvez appeler la méthode getItemsAsync() pour obtenir une liste du contenu du dossier (objet StorageFolder). Si vous ne souhaitez pas obtenir tous les éléments, appelez la méthode getItemsAsync(startIndex, maxItemsToRetrieve) pour obtenir le contenu du dossier correspondant à une plage d’index spécifique.

Lorsque vous appelez la méthode getItemsAsync pour un dossier, la liste d’éléments renvoyée est limitée aux fichiers et sous-dossiers de ce dossier ; elle n’inclut pas les fichiers et dossiers situés dans ces sous-dossiers.

Pour obtenir une liste des fichiers contenus dans un dossier, appelez la méthode getFilesAsync. Pour obtenir une liste des dossiers, appelez la méthode getFoldersAsync.

Après avoir obtenu la liste, utilisez la méthode then pour définir une fonction qui prend la liste d’éléments reçue (items dans l’exemple précédent) et qui effectue les autres tâches requises.

Utilisation de votre liste

L’exemple FolderEnumeration figurant sur la page d’accueil des exemples d’applications de style Metro effectue d’autres tâches sur la liste d’éléments (items) dans la bibliothèque d’images :

    outputHeader(picturesLibrary.name, items.size);
    items.forEach(function (item) { 
        if (item.isOfType(Windows.Storage.StorageItemTypes.folder)) { 
            output(id(picturesLibrary.name), item.name + "\\"); 
        } 
        else { 
            output(id(picturesLibrary.name), item.fileName); 
        } 
    });

Dans l’exemple précédent, le nom du dossier (name) et la taille de la liste (size) sont transmis à une fonction d’assistance qui affiche ces informations à l’utilisateur.

Vous pouvez également créer une itération au sein de la liste d’éléments pour effectuer d’autres tâches, comme vous l’avez vu dans l’exemple précédent. Appelez forEach pour votre liste d’éléments si vous souhaitez itérer chaque élément de cette liste. La fonction transmise à forEach doit prendre un élément de liste en tant qu’argument, puis s’exécuter pour chaque élément (item) de la liste.

Vous pouvez traiter chaque élément (item) individuellement en appelant les méthodes requises. Dans l’exemple précédent, nous avons vérifié si item était un dossier (objet StorageFolder) ou un fichier (objet StorageFile) en comparant le résultat de la méthode isOfType, définie pour les fichiers et les dossiers, avec la valeur d’énumération StorageItemTypes. Nous avons utilisé cette comparaison pour transmettre différentes informations sur l’élément à la fonction d’assistance output, mais nous aurions pu aussi effectuer d’autres tâches.

Pour obtenir plus de contexte et savoir comment utiliser les fonctions outputHeader et output, téléchargez l’exemple FolderEnumeration sur la page d’accueil des exemples d’applications de style Metro.

Terminer l’exemple

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

//  Get folder contents
picturesLibrary.getItemsAsync().then(function (items) {
    // Then perform tasks with the list of files and folders that was retrieved

    // For example, display name of containing folder and count of items in folder
    outputHeader(picturesLibrary.name, items.size);

    // For example, display info for each item
    items.forEach(function (item) { 
        if (item.isOfType(Windows.Storage.StorageItemTypes.folder)) { 
            output(id(picturesLibrary.name), item.name + "\\"); 
        } 
        else { 
            output(id(picturesLibrary.name), item.fileName); 
        } 
    }); 
});

Rubriques associées

Accès aux données des fichiers

Comment obtenir des listes de fichiers triées

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.StorageItemTypes enum