Abrir archivos y carpetas con un selectorOpen files and folders with a picker

API importantesImportant APIs

Para obtener acceso a archivos y carpetas, permite al usuario interactuar con un selector.Access files and folders by letting the user interact with a picker. Puedes usar las clases FileOpenPicker y FileSavePicker para acceder a archivos y la clase FolderPicker para acceder a una carpeta.You can use the FileOpenPicker and FileSavePicker classes to access files, and the FolderPicker to access a folder.

Nota

 Para obtener una muestra completa, consulta File picker sample (Muestra de selector de archivos). For a complete sample, see the File picker sample.

Requisitos previosPrerequisites

Interfaz de usuario del selector de archivosFile picker UI

Un selector de archivos muestra información para guiar a los usuarios y proporcionar una experiencia coherente cuando estos abren o guardan archivos.A file picker displays information to orient users and provide a consistent experience when opening or saving files.

Esta información incluye:That information includes:

  • La ubicación actualThe current location
  • El elemento o los elementos que el usuario ha seleccionadoThe item or items that the user picked
  • Un árbol de ubicaciones que el usuario puede examinar.A tree of locations that the user can browse to. Estas ubicaciones son ubicaciones del sistema de archivos (como las carpetas Música o Descargas), así como aplicaciones que implementan el contrato del selector de archivos (como Cámara, Fotos y Microsoft OneDrive).These locations include file system locations—such as the Music or Downloads folder—as well as apps that implement the file picker contract (such as Camera, Photos, and Microsoft OneDrive).

Es probable que una aplicación de correo muestre un selector de archivos para que el usuario pueda seleccionar archivos adjuntos.An email app might display a file picker for the user to pick attachments.

Un selector de archivos con dos archivos seleccionados para abrirse.

Funcionamiento de los selectoresHow pickers work

Con un selector, la aplicación puede acceder a archivos y carpetas, examinarlos y guardarlos en cualquier parte del sistema del usuario.With a picker your app can access, browse, and save files and folders on the user's system. La aplicación recibe estas selecciones como objetos StorageFile y StorageFolder, sobre los que luego puedes actuar.Your app receives those picks as StorageFile and StorageFolder objects, which you can then operate on.

El selector usa una interfaz única y unificada para que el usuario pueda seleccionar archivos y carpetas del sistema de archivos o de otras aplicaciones.The picker uses a single, unified interface to let the user pick files and folders from the file system or from other apps. Los archivos seleccionados desde otras aplicaciones son como archivos del sistema de archivos: se devuelven como objetos StorageFile.Files picked from other apps are like files from the file system: they are returned as StorageFile objects. En general, la aplicación puede actuar sobre ellos de la misma manera que otros objetos similares.In general, your app can operate on them in the same ways as other objects. Otras aplicaciones hacen que los archivos estén disponibles mediante su participación en los contratos del selector de archivos.Other apps make files available by participating in file picker contracts. Si quieres que tu aplicación proporcione archivos, una ubicación para guardar o actualizaciones de archivos a otras aplicaciones, consulta Integrar con contratos del selector de archivos.If you want your app to provide files, a save location, or file updates to other apps, see Integrating with file picker contracts.

Por ejemplo, podrías llamar al selector de archivos en la aplicación para que el usuario pueda abrir un archivo.For example, you might call the file picker in your app so that your user can open a file. Esto hace que la aplicación llame a la aplicación.This makes your app the calling app. El selector de archivos interactúa con el sistema o con otras aplicaciones para permitir que el usuario navegue y seleccione el archivo.The file picker interacts with the system and/or other apps to let the user navigate and pick the file. Cuando el usuario elige un archivo, el selector de archivos devuelve ese archivo a la aplicación.When your user chooses a file, the file picker returns that file to your app. A continuación se muestra este proceso para el caso en el que el usuario elige un archivo de una aplicación proveedora, como OneDrive.Here's the process for the case of the user choosing a file from a providing app, such as OneDrive.

Diagrama que muestra el proceso de una aplicación que obtiene un archivo para abrirlo desde otra aplicación con el selector de archivos como interfaz entre ambas aplicaciones.

Seleccionar un solo archivo: lista completa de códigosPick a single file: complete code listing

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

Seleccionar un solo archivo: paso a pasoPick a single file: step-by-step

El uso del selector de archivos requiere la creación y la personalización de un objeto de selector de archivos y, luego, la visualización del selector de archivos para que el usuario pueda seleccionar uno o varios elementos.Using a file picker involves creating and customizing a file picker object, and then showing the file picker so the user can pick one or more items.

  1. Crear y personalizar un FileOpenPickerCreate and customize a 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");
    

    Establece las propiedades en el objeto de selector de archivos que sean relevantes para los usuarios y la aplicación.Set properties on the file picker object relevant to your users and app.

    En este ejemplo, se crea en una práctica ubicación una representación visual enriquecida con imágenes, que el usuario puede seleccionar estableciendo tres propiedades: ViewMode, SuggestedStartLocation y FileTypeFilter.This example creates a rich, visual display of pictures in a convenient location that the user can pick from by setting three properties: ViewMode, SuggestedStartLocation, and FileTypeFilter.

    • Al establecer la propiedad ViewMode en el valor de enumeración Thumbnail de PickerViewMode, se crea una representación visual enriquecida con miniaturas de imágenes para representar archivos en el selector de archivos.Setting ViewMode to the PickerViewMode Thumbnail enum value creates a rich, visual display by using picture thumbnails to represent files in the file picker. Haz esto para seleccionar archivos visuales, como imágenes o vídeos.Do this for picking visual files such as pictures or videos. De lo contrario, usa PickerViewMode.List.Otherwise, use PickerViewMode.List. Una aplicación hipotética de correo electrónico con las características Adjuntar imagen o vídeo y Adjuntar documento establecería el ViewMode adecuado para la característica antes de mostrar el selector de archivos.A hypothetical email app with Attach Picture or Video and Attach Document features would set the ViewMode appropriate to the feature before showing the file picker.

    • Establecer SuggestedStartLocation en Imágenes mediante PickerLocationId.PicturesLibrary permite al usuario iniciar en una ubicación donde probablemente pueda encontrar imágenes.Setting SuggestedStartLocation to Pictures using PickerLocationId.PicturesLibrary starts the user in a location where they're likely to find pictures. Establece SuggestedStartLocation en una ubicación adecuada para el tipo de archivo que se está seleccionando, por ejemplo, música, imágenes, vídeos o documentos.Set SuggestedStartLocation to a location appropriate for the type of file being picked, for example Music, Pictures, Videos, or Documents. Desde la ubicación de inicio, el usuario puede dirigirse a otras ubicaciones.From the start location, the user can navigate to other locations.

    • El uso de FileTypeFilter para especificar los tipos de archivo mantiene al usuario concentrado en la selección de los archivos relevantes.Using FileTypeFilter to specify file types keeps the user focused on picking files that are relevant. Para reemplazar los tipos de archivo anteriores de la propiedad FileTypeFilter con entradas nuevas, usa ReplaceAll en lugar de Add.To replace previous file types in the FileTypeFilter with new entries, use ReplaceAll instead of Add.

  2. Mostrar FileOpenPickerShow the FileOpenPicker

    • Para seleccionar un único archivoTo pick a single file

      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 seleccionar varios archivosTo pick multiple files

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

Seleccionar una carpeta: lista completa de códigosPick a folder: complete code listing

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

Sugerencia

Cuando la aplicación obtenga acceso a un archivo o a una carpeta a través de un selector, agrégalo a la propiedad FutureAccessList o a la propiedad MostRecentlyUsedList de la aplicación para tenerlo controlado en el futuro.Whenever your app accesses a file or folder through a picker, add it to your app's FutureAccessList or MostRecentlyUsedList to keep track of it. Obtendrás más información sobre cómo usar estas listas en el tema Cómo hacer un seguimiento de los archivos y carpetas usados recientemente.You can learn more about using these lists in How to track recently-used files and folders.