Salvar um arquivo com um seletor
APIs importantes
Use o FileSavePicker para permitir que os usuários especifiquem o nome e o local onde desejam que o aplicativo salve um aplicativo.
Observação
Para obter um exemplo completo, veja o Exemplo de seletor de arquivos.
Observação
Observação: em um aplicativo de área de trabalho (que inclui aplicativos WinUI 3), você pode usar seletores de arquivos e pastas a partir de Windows.Storage.Pickers. No entanto, se o aplicativo da área de trabalho exigir elevação para ser executado, você precisará de uma abordagem diferente porque essas APIs não foram projetadas para serem usadas em um aplicativo elevado. Para obter um exemplo, consulte FileSavePicker.
Pré-requisitos
Entender a programação assíncrona para aplicativos UWP (Plataforma Universal do Windows)
Você pode aprender a escrever aplicativos assíncronos em C# ou Visual Basic, consulte Chamar APIs assíncronas em C# ou Visual Basic. Para saber como escrever aplicativos assíncronos em C++, consulte Programação assíncrona em C++.
Permissões de acesso ao local
Consulte Permissões de acesso a arquivo.
FileSavePicker: passo a passo
Use um FileSavePicker para que os usuários possam especificar o nome, o tipo e o local de salvamento de um arquivo. Crie, personalize e mostre um objeto do seletor de arquivos e, em seguida, salve os dados pelo objeto StorageFile retornado que representa o arquivo selecionado.
Criar e personalizar o 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";
Defina propriedades no objeto do seletor de arquivos que forem relevantes para seus usuários e seu aplicativo. Este exemplo define três propriedades: SuggestedStartLocation, FileTypeChoices e SuggestedFileName.
Como nosso usuário está salvando um documento ou arquivo de texto, a amostra define SuggestedStartLocation como a pasta local do aplicativo usando LocalFolder. Configure SuggestedStartLocation para um local apropriado para o tipo de arquivo que será salvo, como Música, Imagens, Vídeos ou Documentos. A partir do local inicial, o usuário pode navegar para outros locais.
Como desejamos que nosso aplicativo abra o arquivo depois dele ser salvo, usamos FileTypeChoices para especificar os tipos de arquivos que a amostra suporta (documentos do Microsoft Word e arquivos de texto). Certifique-se de que todos os tipos de arquivos sejam suportados por seu aplicativo. Os usuários poderão salvar seus arquivos como qualquer tipo de arquivo que você especificar. Eles também podem alterar o tipo de arquivo selecionando outro tipo de arquivo que você especificou. A primeira opção de tipo de arquivo na lista será selecionada por padrão: para controlar isso, configure a propriedade DefaultFileExtension.
Observação
O seletor de arquivos também utiliza o tipo de arquivo atualmente selecionado para filtrar quais arquivos são exibidos, de forma que os únicos tipos de arquivos que correspondem aos tipos de arquivos selecionados são exibidos para o usuário.
- Para poupar o usuário da digitação, o exemplo define um SuggestedFileName. Torne seu nome de arquivo sugerido relevante para o arquivo que está sendo salvo. Por exemplo, como no Word, você pode sugerir o nome de arquivo existente se houver um, ou a primeira linha de um documento se o usuário estiver salvando um arquivo que ainda não possui nome.
Observação
Os objetos FileSavePicker exibem o seletor de arquivos usando o modo de exibição PickerViewMode.List.
Mostrar o FileSavePicker e salvar no arquivo selecionado
Exiba o seletor de arquivos chamando PickSaveFileAsync. Depois que o usuário especifica o nome, o tipo de arquivo e o local e confirma o arquivo a ser salvo, PickSaveFileAsync retorna um objeto StorageFile que representa o arquivo salvo. Você pode capturar e processar esse arquivo agora que tem acesso de leitura e gravação a ele.
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."; }
O exemplo verifica se o arquivo é válido e grava seu próprio nome de arquivo nele. Consulte também Criando, escrevendo e lendo um arquivo.
Dica
Sempre verifique o arquivo salvo para ter certeza de sua validade antes de executar qualquer outro processamento. Depois disso, você poderá salvar o conteúdo no arquivo, conforme apropriado ao seu aplicativo, e fornecer o comportamento adequado se o arquivo selecionado não for válido.
Confira também
Arquivos, pastas e bibliotecas