Démarrage rapide : accès aux fichiers par programmation (HTML)

[ 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 ]

Accédez aux fichiers et dossiers d’un emplacement, par exemple, un dossier, une bibliothèque, un périphérique ou un emplacement réseau. Vous pouvez également interroger les fichiers et dossiers situés à un emplacement en construisant des requêtes de fichiers et de dossiers.

Prérequis

Énumérer les fichiers et dossiers de niveau supérieur dans un emplacement

  1. Récupérez un StorageFolder qui représente l’emplacement.

    Si vous voulez récupérer la liste du contenu d’un dossier particulier, vous devez d’abord récupérer un objet StorageFolder qui représente cet emplacement.

    L’exemple d’énumération de dossier montre comment accéder à la bibliothèque 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 en savoir plus sur l’accès aux fichiers et à leurs fonctionnalités, voir Accès aux fichiers et autorisations et Accès aux ressources utilisateur à l’aide de Windows Runtime.

     

  2. Récupérez la liste du contenu du dossier.

    L’exemple d’énumération de dossier montre comment obtenir une liste d’éléments dans la bibliothèque 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.

  3. Utilisation de votre liste.

    L’exemple d’énumération de dossier montre comment effectuer des tâches supplémentaires avec la liste de items dans la bibliothèque 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 plus de contexte et voir comment les fonctions outputHeader et output marchent, téléchargez l’exemple d’énumération de dossier.

Une fois que vous avez terminé, votre code doit ressembler à ceci :


// 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); 
        } 
    }); 
});

Interroger des fichiers à un emplacement particulier

  1. Récupérez le dossier conteneur.

    Si vous voulez récupérer une liste du contenu d’un dossier particulier, vous devez d’abord récupérer le dossier.

    L’exemple d’énumération de dossier montre comment accéder à la bibliothèque 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 en savoir plus sur l’accès aux fichiers et à leurs fonctionnalités, voir Accès aux fichiers et autorisations et Accès aux ressources utilisateur à l’aide de Windows Runtime.

     

  2. Créez 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 d’énumération de dossier montre comment créer une requête de dossier qui regroupe les images dans 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.

  3. Récupérez la liste des dossiers virtuels à l’aide de la requête.

    L’exemple FolderEnumeration sur la page d’accueil des exemples d’applications utilise query pour récupérer 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.

  4. Récupérez la liste des fichiers contenus dans le dossier virtuel.

    L’exemple d’énumération de dossier montre comment utiliser le dossier month pour obtenir la liste des images qui ont été prises ou créées au cours du mois représenté :

    
            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.

Une fois que vous avez terminé, votre code doit ressembler à ceci :


// 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
        }); 
    }); 
});

Récapitulatif et étapes suivantes

Pour en savoir plus sur la lecture et l’écriture des fichiers, voir Démarrage rapide : lecture et écriture d’un fichier et l’exemple d’accès au fichier. Pour en savoir plus sur l’utilisation des fichiers d’images, voir Comment sélectionner et afficher une image, Comment décoder une image et l’exemple d’utilisation d’un blob pour enregistrer et charger du contenu.

Pour découvrir comment accéder aux fichiers via le sélecteur de fichiers, voir Démarrage rapide : accès aux fichiers à l’aide de sélecteurs de fichiers.

Rubriques associées

Accès aux données et aux fichiers

Accès aux fichiers et autorisations

Démarrage rapide : accès aux fichiers à l’aide de sélecteurs de fichiers

Démarrage rapide : lecture et écriture d’un fichier

Exemple de recherche de fichier par programme

Exemple d’énumération de dossier

Exemple d’accès aux fichiers

Exemple d’utilisation d’un blob pour enregistrer et charger du contenu

Référence

Windows.Storage.KnownFolders class

Windows.Storage.StorageFile class

Windows.Storage.StorageFolder class

Windows.Storage.StorageItemTypes enum

Windows.Storage.Search.CommonFolderQuery enum

Windows.Storage.Search.StorageFolderQueryResult class