Ouvrir des fichiers et dossiers à l’aide d’un sélecteur

API importantes

Accédez aux fichiers et dossiers en permettant à l’utilisateur d’interagir avec ceux-ci à l’aide d’un sélecteur. Vous pouvez utiliser les classes FileOpenPicker et FileSavePicker pour accéder à des fichiers et la classe FolderPicker pour accéder à un dossier.

Notes

 Pour obtenir un exemple complet, consultez l’exemple de sélecteur de fichiers.

Remarque

Dans une application de bureau (qui inclut des applications WinUI 3), vous pouvez utiliser des sélecteurs de fichiers et de dossiers à partir de Windows.Stockage.Pickers. Toutefois, si l’application de bureau nécessite une élévation pour s’exécuter, vous devrez adopter une approche différente, car ces API ne sont pas conçues pour être utilisées dans une application avec élévation de privilèges. Pour obtenir un exemple, consultez FileSavePicker.

Prérequis

Interface utilisateur de sélecteur de fichiers

Un sélecteur de fichiers affiche des informations pour guider les utilisateurs et leur offrir une expérience cohérente quand ils ouvrent ou enregistrent des fichiers.

Ces informations sont les suivantes :

  • emplacement actuel ;
  • éléments que l'utilisateur a sélectionnés ;
  • arborescence des emplacements auxquels l’utilisateur peut accéder. Ces emplacements incluent des emplacements du système de fichiers (tels que les dossiers Musique ou Téléchargements), ainsi que les applications qui implémentent le contrat du sélecteur de fichiers (telles que Caméra, Photos et Microsoft OneDrive).

Une application de messagerie peut afficher un sélecteur de fichiers pour permettre à l’utilisateur de sélectionner des pièces jointes.

a file picker with two files picked to be opened.

Fonctionnement des sélecteurs de fichiers

Grâce à un sélecteur de fichiers, votre application peut consulter, parcourir et enregistrer des fichiers et dossiers sur le système de l’utilisateur. Votre application reçoit ces sélections en tant qu’objets StorageFile et StorageFolder que vous pouvez ensuite utiliser.

Le sélecteur de fichiers utilise une interface unique et unifiée permettant à l’utilisateur de sélectionner des fichiers et dossiers à partir du système de fichiers ou d’autres applications. Les fichiers sélectionnés à partir d’autres applications sont comme ceux du système de fichiers : ils sont renvoyés en tant qu’objets StorageFile. En règle générale, votre application peut travailler sur ces fichiers de la même manière que sur les autres objets. D’autres applications rendent les fichiers disponibles en participant à des contrats de sélecteurs de fichiers. Pour que votre application indique des fichiers, un emplacement d’enregistrement ou des mises à jour de fichiers aux autres applications, voir Intégration aux contrats du sélecteur de fichiers.

Par exemple, vous pouvez appeler le sélecteur de fichiers dans votre application de sorte que votre utilisateur puisse ouvrir un fichier. Cela fait de votre application l’application d’appel. Le sélecteur de fichiers interagit avec le système ou d’autres applications pour permettre à l’utilisateur de naviguer et de sélectionner le fichier. Lorsque l’utilisateur choisit un fichier, le sélecteur de fichiers retourne celui-ci à votre application. Voici le processus quand l’utilisateur choisit un fichier à partir d’une application de distribution telle que OneDrive.

a diagram that shows the process of one app getting a file to open from another app using the file picker as an interface bewteen the two apps.

Sélectionner un seul fichier : code complet

var picker = new Windows.Storage.Pickers.FileOpenPicker();
picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail;
picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary;
picker.FileTypeFilter.Add(".jpg");
picker.FileTypeFilter.Add(".jpeg");
picker.FileTypeFilter.Add(".png");

Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();
if (file != null)
{
    // Application now has read/write access to the picked file
    this.textBlock.Text = "Picked photo: " + file.Name;
}
else
{
    this.textBlock.Text = "Operation cancelled.";
}

Sélectionner un seul fichier : procédure pas à pas

Utiliser un sélecteur de fichiers consiste à créer et à personnaliser un objet sélecteur de fichiers, puis à afficher le sélecteur à l'utilisateur afin de lui permettre de sélectionner un ou plusieurs éléments.

  1. Créer et personnaliser un sélecteur FileOpenPicker

    var picker = new Windows.Storage.Pickers.FileOpenPicker();
    picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail;
    picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary;
    picker.FileTypeFilter.Add(".jpg");
    picker.FileTypeFilter.Add(".jpeg");
    picker.FileTypeFilter.Add(".png");
    

    Définissez des propriétés sur l’objet sélecteur de fichiers qui sont pertinentes pour vos utilisateurs et votre application.

    Cet exemple crée un riche éventail visuel d’images dans un emplacement approprié où l’utilisateur peut opérer une sélection en définissant trois propriétés : ViewMode, SuggestedStartLocation et FileTypeFilter.

    • La définition de ViewMode sur la valeur enum ThumbnailPickerViewMode crée un riche éventail visuel au travers d’images miniatures pour représenter les fichiers dans le sélecteur de fichiers. Procédez de la sorte pour sélectionner des fichiers visuels tels que des images ou des vidéos. Autrement, utilisez PickerViewMode.List. Une application de messagerie hypothétique offrant des fonctionnalités permettant de joindre une image ou une vidéo et de joindre un document définirait la propriété ViewMode appropriée pour la fonctionnalité avant d’afficher le sélecteur de fichiers.

    • Définir SuggestedStartLocation sur Images avec PickerLocationId.PicturesLibrary permet à l’utilisateur de démarrer à un emplacement où il est susceptible de trouver des images. Définissez SuggestedStartLocation sur un emplacement approprié pour le type de fichier sélectionné, par exemple, Musique, Images, Vidéos ou Documents. À partir de l’emplacement de départ, l’utilisateur peut accéder à d’autres emplacements.

    • L’utilisation du FileTypeFilter pour spécifier les types de fichiers permet à l’utilisateur de se concentrer sur la sélection de fichiers appropriés. Si vous souhaitez remplacer d’anciens types de fichiers dans le FileTypeFilter par de nouvelles entrées, vous pouvez utiliser la méthode ReplaceAll à la place de la méthode Add.

  2. Afficher FileOpenPicker

    • Pour sélectionner un fichier

      Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();
      if (file != null)
      {
          // Application now has read/write access to the picked file
          this.textBlock.Text = "Picked photo: " + file.Name;
      }
      else
      {
          this.textBlock.Text = "Operation cancelled.";
      }
      
    • Pour sélectionner plusieurs fichiers

      var files = await picker.PickMultipleFilesAsync();
      if (files.Count > 0)
      {
          StringBuilder output = new StringBuilder("Picked files:\n");
      
          // Application now has read/write access to the picked file(s)
          foreach (Windows.Storage.StorageFile file in files)
          {
              output.Append(file.Name + "\n");
          }
          this.textBlock.Text = output.ToString();
      }
      else
      {
          this.textBlock.Text = "Operation cancelled.";
      }
      

Sélectionner un dossier : code complet

var folderPicker = new Windows.Storage.Pickers.FolderPicker();
folderPicker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.Desktop;
folderPicker.FileTypeFilter.Add("*");

Windows.Storage.StorageFolder folder = await folderPicker.PickSingleFolderAsync();
if (folder != null)
{
    // Application now has read/write access to all contents in the picked folder
    // (including other sub-folder contents)
    Windows.Storage.AccessCache.StorageApplicationPermissions.
    FutureAccessList.AddOrReplace("PickedFolderToken", folder);
    this.textBlock.Text = "Picked folder: " + folder.Name;
}
else
{
    this.textBlock.Text = "Operation cancelled.";
}

Conseil

Chaque fois que votre application accède à un fichier ou à un dossier par le biais d’un sélecteur, ajoutez ce dernier aux listes FutureAccessList ou MostRecentlyUsedList de votre application pour en garder la trace. Pour plus d’informations sur l’utilisation de ces listes, consultez Comment suivre les fichiers et les dossiers récemment utilisés.

Voir aussi

Windows.Storage.Pickers

Fichiers, dossiers et bibliothèques

Intégration à des contrats de sélecteur de fichiers