Enregistrer un fichier avec un sélecteur
API importantes
Utilisez FileSavePicker pour permettre aux utilisateurs de spécifier le nom et l’emplacement où ils souhaitent que votre application enregistre un fichier.
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
Comprendre la programmation asynchrone pour les applications pour la plateforme Windows universelle (UWP)
Pour apprendre à écrire des applications asynchrones en C# ou Visual Basic, voir Appeler des API asynchrones en C# ou Visual Basic. Pour apprendre à écrire des applications asynchrones en C++, voir Programmation asynchrone en C++.
Autorisations d’accès à l’emplacement
Sélecteur FileSavePicker : pas à pas
Utilisez un FileSavePicker pour permettre à l’utilisateur de spécifier le nom, le type et l’emplacement d’un fichier à enregistrer. Créez, personnalisez et affichez un objet sélecteur de fichiers, puis enregistrez des données via l’objet StorageFile retourné qui représente le fichier sélectionné.
Créer et personnaliser le sélecteur FileSavePicker
var savePicker = new Windows.Storage.Pickers.FileSavePicker(); savePicker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.DocumentsLibrary; // Dropdown of file types the user can save the file as savePicker.FileTypeChoices.Add("Plain Text", new List<string>() { ".txt" }); // Default file name if the user does not type one in or select a file to replace savePicker.SuggestedFileName = "New Document";
Définissez des propriétés sur l’objet sélecteur de fichiers qui sont pertinentes pour vos utilisateurs et votre application. Cet exemple définit trois propriétés : SuggestedStartLocation, FileTypeChoices et SuggestedFileName.
Comme l’utilisateur enregistre un document ou un fichier texte, l’exemple définit SuggestedStartLocation sur le dossier local de l’application, avec la propriété LocalFolder. Définissez SuggestedStartLocation sur un emplacement approprié pour le type de fichier enregistré, par exemple, Musique, Images, Vidéos ou Documents. À partir de l’emplacement de départ, l’utilisateur peut accéder à d’autres emplacements.
Pour nous assurer que l’application puisse ouvrir le fichier une fois celui-ci enregistré, nous utilisons FileTypeChoices pour spécifier les types de fichiers que l’exemple prend en charge (documents Microsoft Word et fichiers texte). Assurez-vous que tous les types de fichiers que vous spécifiez sont pris en charge par votre application. L’utilisateur peut enregistrer son fichier sous tout type de fichier que vous spécifiez. Il peut également modifier le type de fichier en sélectionnant un autre type que vous avez spécifié. Le premier choix de type de fichier dans la liste est sélectionné par défaut : pour contrôler cela, définissez la propriété DefaultFileExtension.
Notes
Le sélecteur de fichiers utilise également le type de fichier actuellement sélectionné pour filtrer les fichiers affichés, afin que seuls les fichiers du type sélectionné soient présentés à l'utilisateur.
- Pour faciliter la saisie, l’exemple définit un SuggestedFileName. Assurez-vous que le nom de fichier suggéré est pertinent pour le fichier enregistré. Par exemple, comme Word, vous pouvez suggérer le nom du fichier existant éventuel, ou la première ligne d’un document si l’utilisateur souhaite enregistrer un fichier qui ne possède pas encore de nom.
Notes
Les objets FileSavePicker affichent le sélecteur de fichiers à l'aide du mode d'affichage PickerViewMode.List.
Afficher le sélecteur FileSavePicker et enregistrer dans le fichier sélectionné
Affichez le sélecteur en appelant la méthode PickSaveFileAsync. Une fois que l’utilisateur a spécifié le nom, le type et l’emplacement du fichier et qu’il a confirmé l’enregistrement du fichier, PickSaveFileAsync retourne un objet StorageFile qui représente le fichier enregistré. À présent que vous disposez d’un accès en lecture et en écriture, vous pouvez capturer et traiter ce fichier.
Windows.Storage.StorageFile file = await savePicker.PickSaveFileAsync(); if (file != null) { // Prevent updates to the remote version of the file until // we finish making changes and call CompleteUpdatesAsync. Windows.Storage.CachedFileManager.DeferUpdates(file); // write to file await Windows.Storage.FileIO.WriteTextAsync(file, "file contents"); // Let Windows know that we're finished changing the file so // the other app can update the remote version of the file. // Completing updates may require Windows to ask for user input. Windows.Storage.Provider.FileUpdateStatus status = await Windows.Storage.CachedFileManager.CompleteUpdatesAsync(file); if (status == Windows.Storage.Provider.FileUpdateStatus.Complete) { this.textBlock.Text = "File " + file.Name + " was saved."; } else { this.textBlock.Text = "File " + file.Name + " couldn't be saved."; } } else { this.textBlock.Text = "Operation cancelled."; }
L’exemple vérifie que le fichier est valide et y écrit son propre nom de fichier. Voir aussi Création, écriture et lecture de fichier.
Conseil
Vous devez toujours vérifier le fichier enregistré pour vous assurer qu'il est valide, avant de poursuivre tout autre traitement. Ensuite, vous pouvez enregistrer du contenu dans le fichier si cela est opportun pour votre application et fournir le comportement approprié si le fichier sélectionné n’est pas valide.
Voir aussi
Fichiers, dossiers et bibliothèques