Partilhar via


Abrir ficheiros e pastas com um seletor

APIs importantes

Acesse arquivos e pastas permitindo que o usuário interaja com um seletor. Você pode usar as classes FileOpenPicker e FileSavePicker para acessar arquivos e o FolderPicker para acessar uma pasta.

Observação

 Para obter um exemplo completo, consulte o Exemplo de seletor de arquivos.

Observação

Em um aplicativo da área de trabalho (que inclui aplicativos WinUI), você pode usar o namespace Microsoft.Windows.Storage.Pickers para acessar os seletores de arquivos e pastas. Esse namespace está disponível no SDK de aplicativos Windows versão 1.8 e posterior. As APIs neste namespace são projetadas para funcionar perfeitamente com aplicativos WinUI, fornecendo uma experiência consistente em diferentes tipos de aplicativos.

No entanto, se necessário, você ainda pode usar os seletores de arquivos e pastas WinRT de Windows.Storage.Pickers. Se o aplicativo da área de trabalho exigir elevação para ser executado, você precisará de uma abordagem diferente, pois essas APIs não foram projetadas para serem usadas em um aplicativo elevado. Para obter um exemplo, consulte FileSavePicker.

Pré-requisitos

Interface do usuário do seletor de arquivos

Um seletor de arquivos exibe informações para orientar os usuários e fornecer uma experiência consistente ao abrir ou salvar arquivos.

Essas informações incluem:

  • A localização atual
  • O item ou itens que o usuário escolheu
  • Uma árvore de locais que o utilizador pode explorar. Esses locais incluem locais do sistema de arquivos, como a pasta Música ou Downloads, bem como aplicativos que implementam o contrato do seletor de arquivos (como Câmera, Fotos e Microsoft OneDrive).

Um aplicativo de email pode exibir um seletor de arquivos para o usuário escolher anexos.

Um seletor de arquivos com dois arquivos selecionados para serem abertos.

Como funcionam os catadores

Com um seletor, seu aplicativo pode acessar, navegar e salvar arquivos e pastas no sistema do usuário. O seu aplicativo recebe essas escolhas como objetos StorageFile e StorageFolder, com os quais pode operar.

O seletor usa uma interface única e unificada para permitir que o usuário escolha arquivos e pastas do sistema de arquivos ou de outros aplicativos. Os ficheiros selecionados de outras aplicações são como ficheiros do sistema de ficheiros: são devolvidos como objetos StorageFile . Em geral, seu aplicativo pode operar neles da mesma maneira que outros objetos. Outras aplicações disponibilizam arquivos ao participar em contratos de seletores de arquivos. Se pretender que a sua aplicação forneça ficheiros, uma localização para guardar ou atualizações de ficheiros para outras aplicações, consulte Integração com contratos de seletor de ficheiros.

Por exemplo, você pode chamar o seletor de arquivos em seu aplicativo para que o usuário possa abrir um arquivo. Isso torna o seu aplicativo o aplicativo de chamada. O seletor de arquivos interage com o sistema e/ou outros aplicativos para permitir que o usuário navegue e escolha o arquivo. Quando o usuário escolhe um arquivo, o seletor de arquivos retorna esse arquivo para seu aplicativo. Aqui está o processo para o caso do usuário escolher um arquivo de um aplicativo de fornecimento, como o OneDrive.

Um diagrama que mostra o processo de um aplicativo fazer com que um arquivo seja aberto de outro aplicativo usando o seletor de arquivos como uma interface entre os dois aplicativos.

Escolha um único arquivo: listagem completa de códigos

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.";
}

Escolha um único ficheiro: passo-a-passo

Usar um seletor de arquivos envolve criar e personalizar um objeto do seletor de arquivos e, em seguida, mostrar o seletor de arquivos para que o usuário possa escolher um ou mais itens.

  1. Criar e personalizar um 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");
    

    Defina propriedades no objeto do seletor de arquivos relevantes para seus usuários e aplicativo.

    Este exemplo cria uma exibição visual rica de imagens em um local conveniente que o usuário pode escolher definindo três propriedades: ViewMode, SuggestedStartLocation e FileTypeFilter.

    • Definir ViewMode para o PickerViewModeThumbnail valor enum cria uma exibição visual rica usando miniaturas de imagem para representar arquivos no seletor de arquivos. Faça isso para escolher arquivos visuais, como fotos ou vídeos. Caso contrário, use PickerViewMode.List. Um aplicativo de e-mail hipotético com os recursos de Anexar Imagem ou Vídeo e Anexar Documento definiria o ViewMode adequado para o recurso antes de mostrar o seletor de arquivos.

    • Definir SuggestedStartLocation como Imagens usando PickerLocationId.PicturesLibrary inicia o usuário em um local onde é provável que ele encontre imagens. Defina SuggestedStartLocation para um local apropriado para o tipo de arquivo que está sendo selecionado, por exemplo, Música, Imagens, Vídeos ou Documentos. A partir do local de início, o usuário pode navegar para outros locais.

    • Usar FileTypeFilter para especificar tipos de arquivo mantém o usuário focado em selecionar arquivos que são relevantes. Para substituir tipos de arquivo anteriores no FileTypeFilter por novas entradas, use ReplaceAll em vez de Add.

  2. Mostrar o seletor de abertura de ficheiros

    • Para escolher um único arquivo

      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.";
      }
      
    • Para escolher vários arquivos

      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.";
      }
      

Escolha uma pasta: listagem completa de códigos

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.";
}

Sugestão

Sempre que a sua aplicação aceder a um ficheiro ou pasta através de um seletor, adicione-o à FutureAccessList da aplicação ou à MostRecentlyUsedList para o acompanhar. Você pode saber mais sobre como usar essas listas em Como rastrear arquivos e pastas usados recentemente.

Ver também

Windows.Storage.Pickers

Ficheiros, pastas e bibliotecas

Integração com contratos de seletor de arquivos