Gestion de fichiers de A à Z

[ 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 ajouter des fonctionnalités de gestion de fichiers à votre application du Windows Store en JavaScript ou s’exécutant sur Windows 8.1.

Chaque section de cette rubrique décrit une fonctionnalité clé de la gestion de fichiers, propose des liens vers une rubrique plus détaillée sur cette fonctionnalité, et fournit des informations sur la façon de trouver rapidement le code pertinent dans l’exemple Gestion de fichiers de A à Z de cette rubrique.

Remarque  La plupart des fonctions utilisées pour interagir avec les fichiers et les dossiers sont asynchrones. Pour apprendre à écrire des applications JavaScript asynchrones, voir Programmation asynchrone en JavaScript.

 

Notions de base sur l’accès aux fichiers : énumération, obtention des propriétés, et lecture et écriture de données

icône d’étape Démarrage rapide : accès aux fichiers par programmation

L’accès aux fichiers qui se trouvent dans un emplacement tel qu’un dossier, une bibliothèque, un appareil ou un réseau peut se résumer à une seule ligne de code : un appel à la fonction StorageFolder.getFilesAsync. Voir Accès aux fichiers par programmation pour obtenir des instructions étape par étape qui montrent comment effectuer des tâches telles que l’énumération des fichiers et des dossiers de niveau supérieur d’un emplacement donné et l’interrogation de fichiers se trouvant dans un emplacement.

Les étapes suivantes vous montrent comment énumérer les fichiers à un emplacement spécifique :

  1. Obtenez un objet StorageFolder pour l’emplacement souhaité. Par exemple, vous pouvez, pour cela, faire référence à l’une des propriétés KnownFolders statiques, telles que KnowFolders.picturesLibrary.
  2. Appelez la fonction StorageFolder.getFilesAsync de l’objet StorageFolder retourné. L’exemple de cette rubrique appelle cette méthode sans aucun paramètre, ce qui indique que tous les fichiers doivent être retournés. Pour voir des exemples de l’appel de StorageFolder.getFilesAsync avec une requête, voir Démarrage rapide : accès aux fichiers par programmation.
  3. Une fois la fonction StorageFolder.getFilesAsync terminée, vous pouvez utiliser une boucle forEach pour parcourir chaque fichier retourné.

L’exemple de code suivant énumère tous les fichiers se trouvant dans Images.


// Get a StorageFolder object representing Pictures.
var library = Windows.Storage.KnownFolders.picturesLibrary;

// Get all files from the StorageFolder object.
library.getFilesAsync().then(function (files) {
    // For each file found ...
    files.forEach(function (file) {
        // ... perform your processing.
        });
    });
}

La capture d’écran ci-dessous, qui est issue de l’exemple, présente un exemple d’énumération des fichiers se trouvant dans Images.

Capture d’écran de l’exemple de gestion de fichiers énumérant les fichiers de la bibliothèque d’images.

Identifier dans l’exemple : l’exemple comprend une page intitulée FileAccessBasics qui inclut les exemples présentés dans cette section. Le code JavaScript et HTML pertinent est centralisé dans les fichiers FileAccessBasicsPage.js (fonction OnEnumPicturesClick) et FileAccessBasicsPage.html.

icône d’étape

Démarrage rapide : obtention des propriétés d’un fichier

Les propriétés de fichier décrivent ou quantifient un attribut d’un fichier ou son contenu. Par exemple, les propriétés de fichier comprennent des données telles que le nom du fichier, le chemin d’accès, la taille du fichier, les attributs du fichier et la date du dernier accès. La rubrique Démarrage rapide : obtention des propriétés d’un fichier montre comment récupérer et afficher les propriétés de base et de niveau supérieur d’un fichier.

Les étapes suivantes vous montrent comment obtenir les propriétés de niveau supérieur ou de base d’un fichier :

L’exemple de code suivant énumère tous les fichiers se trouvant dans Images et affiche différentes propriétés de fichier de niveau supérieur et de base. Notez comment les objets promises JavaScript sont utilisés pour synchroniser les résultats de deux opérations asynchrones (StorageFolder.getFilesAsync et StorageFile.getBasicPropertiesAsync). Pour en savoir plus sur la programmation asynchrone et les objets promises en JavaScript, consultez la rubrique Programmation asynchrone en JavaScript.


// Get a StorageFolder object representing the Pictures Library.
var library = Windows.Storage.KnownFolders.picturesLibrary;

// Initialize string that holds all property information.
var outString = "";

// Get all files from the StorageFolder object.
library.getFilesAsync().then(function (files) {
    var promises = [];
    files.forEach(function (file) {
        promises.push(WinJS.Promise.as(file));
        promises.push(file.getBasicPropertiesAsync());
    })
    return WinJS.Promise.join(promises);
})
.done(function (results) {
    var counter = 0

    while (counter < results.length) {
        var file = results[counter];
        var props = results[counter + 1];
        outString += "File name: " + file.name + "<br/>";
        outString += "File type: " + file.fileType + "<br/>";
        outString += "File size: " + props.size + "<br/>";
        outString += "<br/>"
        counter = counter + 2;
    }
});

La capture d’écran ci-dessous, qui est issue de l’exemple, présente un exemple d’obtention de différentes propriétés de fichier de base et de niveau supérieur.

Capture d’écran de l’exemple de gestion de fichiers récupérant les propriétés de fichiers.

Identifier dans l’exemple : l’exemple comprend une page intitulée FileAccessBasics qui inclut les exemples présentés dans cette section. Le code JavaScript et HTML pertinent est centralisé dans les fichiers FileAccessBasicsPage.js (fonction OnGetFilePropertiesClick) et FileAccessBasicsPage.html.

icône d’étape

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

Une application du Windows Store lit et écrit des fichiers via la classe FileIO. Voir la rubrique Démarrage rapide : lecture et écriture d’un fichier pour obtenir des exemples de code qui montrent comment lire et écrire différents types de données en utilisant les classes FileIO et StorageFile.

Dn595121.wedge(fr-fr,WIN.10).gifÉcriture de texte dans un fichier

  1. Pour écrire dans un fichier, vous devez d’abord acquérir un objet StorageFile à passer à l’une des fonctions FileIO pour l’écriture de données. Dans l’exemple, cette opération est effectuée en créant un fichier via la fonction StorageFolder.createFileAsync.
  2. Une fois que vous avez un objet StorageFile, vous pouvez écrire du texte dans son fichier sous-jacent via l’une des fonctions FileIO.writeTextAsync surchargées.
L’exemple de code suivant écrit la date et l’heure actuelles dans un exemple de fichier.

// Create the sample file; replacing it if it already exists.
var lib = Windows.Storage.KnownFolders.picturesLibrary;
lib.createFileAsync("FileHandlingJs.txt", 
    Windows.Storage.CreationCollisionOption.replaceExisting)
.then(function (file) {
    if (file) {
        // Format a string based on the current data/time.
        var now = new Date();
        var sampleFileContents = 
            [[now.getMonth() + 1, now.getDate(), now.getFullYear()].join("/"),
            [now.getHours(), AddZero(now.getMinutes())].join(":"),
            now.getHours() >= 12 ? "PM" : "AM"].join(" ");

        // Write the text to the sample file.
        Windows.Storage.FileIO.writeTextAsync(file, sampleFileContents)
        .then(function () {
            // File's contents have been written at this point.
        }, 
        function (error) {
            // Handle error.
        });
    }
});

Dn595121.wedge(fr-fr,WIN.10).gifLecture de texte dans un fichier

  1. Pour lire le contenu d’un fichier, vous devez d’abord acquérir un objet StorageFile à passer à l’une des fonctions FileIO pour la lecture de données. Dans l’exemple, cette opération est effectuée en appelant la fonction StorageFolder.getFileAsync.
  2. Une fois que vous avez un objet StorageFile, vous pouvez lire du texte dans son fichier sous-jacent via l’une des fonctions FileIO.readTextAsync surchargées.
L’exemple de code suivant lit le contenu d’un exemple de fichier.

// Open sample file.
Windows.Storage.KnownFolders.picturesLibrary.getFileAsync("FileHandlingJs.txt")
.then(function (file) {
    // If file found ...
    if (file) {
        // Read file's contents.
        Windows.Storage.FileIO.readTextAsync(file).then(function (contents) {
            // Process file contents as needed.
        });
    }
}, function (error) {
    // Handle error.
});

La capture d’écran ci-dessous présente un exemple d’exécution de l’exemple et d’écriture dans le fichier exemple.

Capture d’écran de l’exemple de gestion de fichiers présentant l’écriture de données texte dans un fichier.

Identifier dans l’exemple : l’exemple comprend une page intitulée FileAccessBasics qui inclut les exemples présentés dans cette section. Le code JavaScript et HTML pertinent est centralisé dans les fichiers FileAccessBasicsPage.js (fonctions OnWriteTextToFileClick and OnReadTextFromFileClick) et FileAccessBasicsPage.html.

 

Utilisation de sélecteurs de fichiers et de dossiers

icône d’étape

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

Les sélecteurs (aussi bien de fichiers que de dossiers) permettent d’afficher une liste de fichiers ou de dossiers à partir de laquelle les utilisateurs peuvent sélectionner un ou plusieurs éléments à traiter. Les sélecteurs peuvent être configurés par programmation pour rechercher des fichiers et des dossiers qui correspondent à un filtre spécifié (par exemple, des fichiers avec une extension spécifique), à partir d’un dossier particulier, d’un mode d’affichage spécifique (liste ou miniature), etc.

Les procédures suivantes vous montrent comment configurer les différents sélecteurs pour une sélection de fichier unique, de plusieurs fichiers et de dossier unique.

Dn595121.wedge(fr-fr,WIN.10).gifConfiguration d’un sélecteur de fichiers pour la sélection de fichier unique

  1. Instanciez un objet FileOpenPicker.
  2. Définissez les propriétés viewMode, suggestedStartLocation et fileTypeFilter de l’objet FileOpenPicker selon les besoins.
  3. Appelez la fonction FileOpenPicker.pickSingleFileAsync. Quand la fonction FileOpenPicker.pickSingleFileAsync est terminée, l’application a un accès en lecture/écriture au fichier sélectionné.
L’exemple de code suivant instancie et affiche un sélecteur de fichiers pour une sélection de fichier unique.

// Instantiate a FileOpenPicker object.
var openPicker = new Windows.Storage.Pickers.FileOpenPicker();

// Set the FileOpenPicker object's key properties.
openPicker.viewMode = Windows.Storage.Pickers.PickerViewMode.thumbnail;

openPicker.suggestedStartLocation = 
    Windows.Storage.Pickers.PickerLocationId.picturesLibrary;

openPicker.fileTypeFilter.replaceAll([".jpg", ".jpeg", ".png" ]);

// Display the FileOpenPicker for single file selection.
openPicker.pickSingleFileAsync().then(function (file) {
    // If the user selected a file ...
    if (file) {
        // ... process file as needed.
    }
    else {
        // User canceled the operation.
    }
});

Dn595121.wedge(fr-fr,WIN.10).gifConfiguration d’un sélecteur de fichiers pour la sélection de plusieurs fichiers

  1. Instanciez un objet FileOpenPicker.
  2. Définissez les propriétés FileOpenPicker.viewMode, FileOpenPicker.suggestedStartLocation et FileOpenPicker.FileTypeFilter de l’objet FileOpenPicker selon les besoins.
  3. Appelez la fonction FileOpenPicker.pickMultipleFileAsync. Quand la fonction FileOpenPicker.pickMultipleFileAsync est terminée, l’application a un accès en lecture/écriture aux fichiers sélectionnés. Les fichiers sélectionnés sont représentés par un tableau d’objets StorageFile. La propriété sizes du tableau vous indique le nombre de fichiers sélectionnés et vous pouvez ainsi utiliser une boucle for avec une notation de tableau standard pour accéder à chaque objet StorageFile.
L’exemple de code suivant instancie et affiche un sélecteur de fichiers pour une sélection de plusieurs fichiers.

// Instantiate a FileOpenPicker object.
var openPicker = new Windows.Storage.Pickers.FileOpenPicker();

// Set the FileOpenPicker object's key properties.
openPicker.viewMode = Windows.Storage.Pickers.PickerViewMode.thumbnail;

openPicker.suggestedStartLocation = 
    Windows.Storage.Pickers.PickerLocationId.picturesLibrary;

openPicker.fileTypeFilter.replaceAll([".jpg", ".jpeg", ".png"]);

// Display the FileOpenPicker for multiple-file selection.
openPicker.pickMultipleFilesAsync().then(function (files) {
    // If the user selected at least one file ...
    if (files.size > 0) {
        for (var i = 0; i < files.size; i++) {
            // ... process each file - For example, files[i]
        }
    }
    else {
        // User canceled the operation.
    }
});

Dn595121.wedge(fr-fr,WIN.10).gifConfiguration d’un sélecteur de dossiers

  1. Instanciez un objet FolderPicker.
  2. Définissez les propriétés FolderPicker.viewMode, FolderPicker.suggestedStartLocationet FolderPicker.fileTypeFilter de l’objet FolderPicker selon les besoins.
  3. Appelez la fonction FileOpenPicker.pickSingleFileAsync. Quand la fonction FolderPicker.pickSingleFolderAsync est terminée, l’application a un accès en lecture/écriture au dossier sélectionné, y compris aux sous-dossiers.
L’exemple de code suivant instancie et affiche un sélecteur de dossiers.

// Instantiate a FolderPicker object.
var folderPicker = new Windows.Storage.Pickers.FolderPicker();

// Set the FileOpenPicker object's key properties.
folderPicker.suggestedStartLocation = 
    Windows.Storage.Pickers.PickerLocationId.desktop;
folderPicker.fileTypeFilter.replaceAll([".docx", ".xlsx", ".pptx"]);

// Display the FolderPicker for folder selection.
folderPicker.pickSingleFolderAsync().then(function (folder) {
    // If the user selected a folder ...
    if (folder) {
        // ... get the folder object.
        Windows.Storage.AccessCache.StorageApplicationPermissions.
        futureAccessList.addOrReplace("PickedFolderToken", folder);
        // Process folder as needed.
    }
    else {
        // User canceled operation.
    }
});

La capture d’écran ci-dessous présente les résultats de l’exécution de l’exemple et de la sélection de deux fichiers (sample1.png et sample2.png).

Capture d’écran de l’exemple de gestion de fichiers utilisant des sélecteurs de fichiers et de dossiers.

Identifier dans l’exemple : l’exemple comprend une page intitulée File and Folder Pickers (Sélecteurs de fichiers et de dossiers) qui illustre les tâches énoncées dans cette section. Le code JavaScript et HTML correspondant à cet exemple se trouve dans les fichiers FilePickerPage.js et FilePickerPage.html, respectivement.

 

Utilisation de fichiers OneDrive

icône d’étape

Démarrage rapide : détermination de la disponibilité des fichiers OneDrive

Windows 8.1 permet aux utilisateurs de marquer des fichiers OneDrive comme étant en ligne uniquement. Quand l’utilisateur est déconnecté de OneDrive, ces fichiers ne sont pas disponibles. Pour vous aider à déterminer par programmation la disponibilité d’un fichier, vous disposez maintenant d’une nouvelle propriété appelée StorageFile.isAvailable. .

Les étapes suivantes vous montrent comment déterminer la disponibilité de fichiers à l’aide de la propriété StorageFile.isAvailable.

  1. Obtenez un objet StorageFolder pour l’emplacement souhaité. Par exemple, vous pouvez, pour cela, faire référence à l’une des propriétés KnownFolders statiques, telles que KnowFolders.picturesLibrary.
  2. Appelez la fonction StorageFolder.getFilesAsync de l’objet StorageFolder retourné. L’exemple de cette rubrique appelle cette méthode sans aucun paramètre, ce qui indique que tous les fichiers doivent être retournés. Pour voir des exemples de l’appel de StorageFolder.getFilesAsync avec une requête, voir Démarrage rapide : accès aux fichiers par programmation.
  3. Une fois la fonction StorageFolder.getFilesAsync terminée, vous pouvez utiliser une boucle forEach pour parcourir chaque fichier retourné.
L’exemple de code suivant énumère tous les fichiers se trouvant dans Images, en affichant le nom, le nom de fournisseur et la disponibilité de chaque fichier.

// Get a StorageFolder object representing Pictures.
var library = Windows.Storage.KnownFolders.picturesLibrary;

// Initialize string that will contain the file name, provider name, 
// and availability for each file.
var outString = "";

// Get all files from the StorageFolder object.
library.getFilesAsync().then(function (files) {
    // For each file found ...
    files.forEach(function (file) {
        // Retrieve the file's name, provider name, and availability.
        outString += file.name 
                  + " (on " 
                  + file.provider.displayName 
                  + ") is " 
                  + (file.isAvailable ? "available" : "not available") + "\n";
    });
});

La capture d’écran ci-dessous présente un exemple de résultats de la vérification de la disponibilité de fichiers se trouvant dans Images.

Capture d’écran de l’exemple de gestion de fichiers illustrant l’utilisation de fichiers OneDrive.

Identifier dans l’exemple : l’exemple comprend une page intitulée "OneDriveFilesPage" qui inclut un bouton permettant d’énumérer tous les fichiers de la bibliothèque d’images sur l’ordinateur local. Le nom de chaque fichier s’affiche avec le fournisseur de ce fichier (par exemple, Ce PC ou OneDrive), ainsi que sa disponibilité. Le code JavaScript et HTML correspondant à cet exemple se trouve dans les fichiers OneDriveFilesPage.js et OneDriveFilesPage.html, respectivement.

 

Finalisation

icône de conditions requises du Windows Store

Utilisation du Kit de certification des applications Windows

Recommandé. Exécutez le Kit de certification des applications Windows pour vérifier que votre application répond à toutes les exigences du Windows Store. Nous recommandons d’exécuter le Kit de certification des applications Windows quand vous ajoutez des fonctionnalités à votre application.

icône stop

Vous avez terminé ! Vous venez d’explorer les différentes fonctionnalités de gestion de fichiers pour votre application. Vous êtes prêt à créer une application semblable à l’exemple Gestion de fichiers de A à Z.

 

Vous voulez en savoir plus ?

Démarrage rapide : programmation asynchrone en JavaScript

Découvrez tout ce qu’il faut savoir sur la programmation asynchrone en JavaScript.

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

Découvrez tout ce qu’il faut savoir sur l’énumération de fichiers.

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

En savoir plus sur la lecture et l’écriture de fichiers.