Idioma: HTML | XAML

Inicio rápido: acceso a archivos mediante selectores de archivos (XAML)

Applies to Windows and Windows Phone

Se puede acceder a archivos y carpetas mediante el selector de archivos, que permite a los usuarios seleccionar archivos y carpetas. Puedes usar la clase FileOpenPicker para acceder a archivos y la clase FolderPicker para acceder a las carpetas.

Requisitos previos

Conocer la programación asincrónica para aplicaciones de Windows en tiempo de ejecución en C#, C++ o Visual Basic

Puedes aprender a escribir aplicaciones asincrónicas en Inicio rápido: llamar a API asincrónicas en C# o Visual Basic.

Interfaz de usuario del selector de archivos

Los selectores de archivos incluyen áreas en la parte superior e inferior de la pantalla que muestran información para guiar al usuario y ofrecen una experiencia coherente cuando los usuarios acceden a los archivos o los guardan.

La información que se muestra incluye:

  • La ubicación actual, que se encuentra en la parte superior izquierda
  • Una cesta de elementos que eligió el usuario, que se encuentra junto al botón
  • Una lista desplegable de ubicaciones que el usuario puede examinar, que se puede seleccionar desde el símbolo circunflejo invertido en la parte superior izquierda

Por ejemplo, en esta captura de pantalla se muestra un selector de archivos al que llamó una aplicación para permitir al usuario elegir algunas fotos (aunque el usuario no eligió ninguna foto en la captura de pantalla).

Captura de pantalla de un selector de archivos con dos archivos seleccionados para abrirlos.

El usuario puede ver la lista desplegable de ubicaciones disponibles, como la lista mostrada en la captura de pantalla de la derecha, si selecciona el símbolo circunflejo invertido de la parte superior izquierda del selector de archivos. Entre ellas se incluyen ubicaciones del sistema de archivos, como la carpeta Música o Descargas. También incluyen otras aplicaciones, si estas otras aplicaciones (como Microsoft OneDrive) participan en los contratos del selector de archivos, lo cual se puede ver al final de la lista en la captura de pantalla.

Captura de pantalla recortada del selector de archivos que muestra la lista desplegable de ubicaciones en la parte superior izquierda.

 

Funcionamiento de los selectores de archivos

A través del selector de archivos, la aplicación puede obtener acceso a archivos y carpetas en cualquier parte del sistema del usuario. Cuando llamas al selector de archivos, el usuario puede examinar el sistema y seleccionar archivos (o carpetas) para acceder a ellos y guardarlos. Después de que el usuario selecciona archivos o carpetas, la aplicación recibe estas selecciones como objetos StorageFile y StorageFolder. La aplicación luego puede actuar sobre las carpetas y los archivos seleccionados utilizando dichos objetos. Para obtener más información sobre cómo acceder a archivos, consulta Acceso a archivos y permisos.

El selector de archivos usa una interfaz única y unificada para que el usuario pueda seleccionar archivos y carpetas del sistema de archivos o de otras aplicaciones. Los archivos seleccionados desde otras aplicaciones son como archivos del sistema de archivos: se devuelven como objetos StorageFile. En general, la aplicación puede actuar sobre ellos de la misma manera que otros objetos similares. Otras aplicaciones hacen que los archivos estén disponibles mediante su participación en los contratos del selector de archivos. Si crees que quizás vas a querer que tu aplicación proporcione archivos a través del selector de archivos, puedes obtener más información en el tema Integrar con contratos del selector de archivos.

Por ejemplo, podrías llamar al selector de archivos en la aplicación para que el usuario pueda abrir un archivo. Esto hace que la aplicación llame a la aplicación. El selector de archivos interactúa con el sistema y con otras aplicaciones para permitir que el usuario navegue y seleccione el archivo. Cuando el usuario elige un archivo, el selector de archivos devuelve ese archivo a la aplicación. El diagrama muestra este proceso para el caso en el que el usuario selecciona un archivo de otra aplicación, como OneDrive. En este caso, OneDrive es la aplicación proveedora.

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 las dos aplicaciones.

Completa el código para seleccionar un archivo

La muestra de selector de archivos ilustra cómo usar FileOpenPicker para que el usuario pueda seleccionar un solo archivo.


FileOpenPicker openPicker = new FileOpenPicker();
openPicker.ViewMode = PickerViewMode.Thumbnail;
openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
openPicker.FileTypeFilter.Add(".jpg");
openPicker.FileTypeFilter.Add(".jpeg");
openPicker.FileTypeFilter.Add(".png");

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


Para obtener el código completo para seleccionar varios archivos, consulta la muestra de selector de archivos.

Tutorial para seleccionar un archivo

Llamar al selector de archivos requiere dos tareas básicas: crear y personalizar un objeto de selector de archivos y mostrar el selector de archivos para que el usuario pueda seleccionar uno o varios elementos.

  1. Crear y personalizar un selector para abrir archivos

    Usa FileOpenPicker si el usuario está seleccionando archivos. Esta clase se puede personalizar. Para ello, configura las propiedades en el objeto que vayas a crear.

    La muestra de selector de archivos ilustra cómo crear y personalizar un objeto FileOpenPicker.

    
    FileOpenPicker openPicker = new FileOpenPicker();
    openPicker.ViewMode = PickerViewMode.Thumbnail;
    openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
    openPicker.FileTypeFilter.Add(".jpg");
    openPicker.FileTypeFilter.Add(".jpeg");
    openPicker.FileTypeFilter.Add(".png");
    
    
    

    Debes establecer las propiedades en el objeto del selector de archivos que sean importantes para los usuarios y la aplicación. Para obtener directrices que te ayudarán a decidir cómo personalizar el selector de archivos, consulta Directrices y lista de comprobación para selectores de archivos. Continúa leyendo para ver por qué establecemos ciertas propiedades para personalizar los selectores de archivos en la muestra de selector de archivos.

    Explicación de las personalizaciones de FileOpenPicker del selector de archivos

    La muestra de selector de archivos crea una representación visual enriquecida en una práctica ubicación que el usuario puede seleccionar estableciendo tres propiedades FileOpenPicker: ViewMode, SuggestedStartLocation y FileTypeFilter.

    • Al establecer openPicker.ViewMode en el valor de enum PickerViewMode Thumbnail se crea una representación visual enriquecida con miniaturas de imágenes para representar archivos en el selector de archivos.

      
      openPicker.ViewMode = PickerViewMode.Thumbnail;
      
      

      Debes considerar la posibilidad de establecer ViewMode en PickerViewMode.Thumbnail si estás usando el selector de archivos para mostrar archivos visuales como imágenes o vídeos. De lo contrario, usa PickerViewMode.List.

      En algunos casos, es posible que el usuario desee seleccionar una imagen, un vídeo o cualquier otro tipo de archivo. Por ejemplo, es posible que el usuario seleccione un archivo para adjuntarlo a un correo electrónico o enviarlo a través de mensajería instantánea. En este caso, debes admitir ambos modos de vista; para ello, agrega dos controles de interfaz de usuario a la aplicación. Un control debe llamar al selector de archivos usando el modo de vista Thumbnail para que el usuario pueda seleccionar imágenes y vídeos. El otro control debe llamar al selector de archivos usando el modo de vista List para que el usuario pueda seleccionar otros tipos de archivos. Por ejemplo, una aplicación de correo tendría dos botones: Adjuntar imagen o vídeo y Adjuntar documento.

    • Establecer openPicker.SuggestedStartLocation en Imágenes mediante PickerLocationId.PicturesLibrary permite al usuario iniciar en una ubicación donde probablemente pueda encontrar imágenes.

      
      openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
      
      

      Debes establecer SuggestedStartLocation en la ubicación del sistema de archivos que sea apropiada para el tipo de archivo que se está seleccionando. Si el usuario está seleccionando música, imágenes o vídeos, establece la ubicación del inicio en Música, Imágenes o Vídeos, respectivamente. Para todos los demás tipos de archivos, establece la ubicación de inicio en Documentos. Se trata simplemente de una ubicación de inicio. Los usuarios pueden desplazarse a otras ubicaciones mientras estén usando el selector de archivos.

      Por otra parte, no siempre se usa SuggestedStartLocation como ubicación de inicio para el selector de archivos. Para ofrecer al usuario sensación de coherencia, el selector de archivos recuerda la última ubicación que el usuario visualizó y, por lo general, se inicia en esa ubicación.

    • Utilizar openPicker.FileTypeFilter.Add para especificar los tipos de archivos que el usuario puede ver en el selector de archivos te permite mantener al usuario concentrado en la selección de archivos que sean relevantes y utilizables.

      
      openPicker.FileTypeFilter.Add(".jpg");
      openPicker.FileTypeFilter.Add(".jpeg");
      openPicker.FileTypeFilter.Add(".png");
      
      

      En C#:  Add es el nombre del método Append para desarrolladores de C#.

      Debes considerar la posibilidad de especificar los tipos de archivos que se muestran en el selector de archivos para que los archivos que se muestren sean relevantes. Por ejemplo, si tu aplicación es un reproductor de vídeo, puedes usar la propiedad FileTypeFilter para asegurarte de que los archivos que se muestran en el selector de archivos tengan el formato de vídeo que admite tu reproductor, según la extensión del nombre del archivo de vídeo.

      Si deseas reemplazar tipos de archivos anteriores en el FileTypeFilter con entradas nuevas, puedes usar el método ReplaceAll en lugar de Add.

  2. Mostrar FileOpenPicker

    Ahora puedes mostrar el selector de archivos para que el usuario pueda seleccionar un solo archivo o varios:

    • Mostrar para que el usuario pueda seleccionar un solo archivo

      Después de crear y personalizar un selector de archivos, permite al usuario elegir un archivo llamando a await en FileOpenPicker.PickSingleFileAsync.

      Cuando el usuario elige un archivo, FileOpenPicker.PickSingleFileAsync devuelve un objeto StorageFile que representa el archivo seleccionado.

      La muestra de selector de archivos ilustra cómo presentar el selector de archivos para que el usuario pueda elegir un archivo.

      
      StorageFile file = await openPicker.PickSingleFileAsync();
      if (file != null)
      {
          // Application now has read/write access to the picked file
          OutputTextBlock.Text = "Picked photo: " + file.Name;
      }
      else
      {
          OutputTextBlock.Text = "Operation cancelled.";
      }
      
      
      
    • Mostrar para que el usuario pueda seleccionar varios archivos

      Después de crear y personalizar un selector de archivos, permite al usuario elegir varios archivos llamando a await en FileOpenPicker.PickMultipleFilesAsync.

      Cuando el usuario elige varios archivos, FileOpenPicker.PickMultipleFilesAsync devuelve una lista de los archivos seleccionados. Los archivos de la lista se representan con objetos StorageFile.

      La muestra de selector de archivos ilustra cómo presentar el selector de archivos para que el usuario pueda elegir varios archivos y cómo capturar la lista de archivos seleccionados para procesarlos.

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

Completa el código para seleccionar una carpeta

La muestra de selector de archivos ilustra cómo usar FolderPicker para que el usuario pueda seleccionar un solo archivo.


if (rootPage.EnsureUnsnapped())
{
    FolderPicker folderPicker = new FolderPicker();
    folderPicker.SuggestedStartLocation = PickerLocationId.Desktop;
    folderPicker.FileTypeFilter.Add(".docx");
    folderPicker.FileTypeFilter.Add(".xlsx");
    folderPicker.FileTypeFilter.Add(".pptx");

    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)
        StorageApplicationPermissions.FutureAccessList.AddOrReplace("PickedFolderToken", folder);
        OutputTextBlock.Text = "Picked folder: " + folder.Name;
    }
    else
    {
        OutputTextBlock.Text = "Operation cancelled.";
    }
}


Para obtener el código completo para seleccionar varios archivos, consulta la muestra de selector de archivos.

Tutorial para seleccionar una carpeta

Llamar al selector de archivos requiere dos tareas básicas: crear y personalizar un objeto de selector de archivos y mostrar el selector de archivos para que el usuario pueda seleccionar uno o varios elementos.

  1. Crear y personalizar un FolderPicker

    Usa FolderPicker si el usuario está seleccionando una carpeta. Esta clase se puede personalizar. Para ello, configura las propiedades en el objeto que vayas a crear.

    La muestra de selector de archivos ilustra cómo crear y personalizar un objeto FolderPicker.

    
    FolderPicker folderPicker = new FolderPicker();
    folderPicker.SuggestedStartLocation = PickerLocationId.Desktop;
    folderPicker.FileTypeFilter.Add(".docx");
    folderPicker.FileTypeFilter.Add(".xlsx");
    folderPicker.FileTypeFilter.Add(".pptx");
    
    
    

    Debes establecer las propiedades en el objeto del selector de archivos que sean importantes para los usuarios y la aplicación. Para obtener directrices que te ayudarán a decidir cómo personalizar el selector de archivos, consulta Directrices y lista de comprobación para selectores de archivos. Continúa leyendo para ver por qué establecemos ciertas propiedades para personalizar los selectores de archivos en la muestra de selector de archivos.

    Explicación de las personalizaciones de FolderPicker del selector de archivos

    La muestra de selector de archivos personaliza el selector de archivos para que seleccione carpetas mediante tres propiedades FolderPicker: ViewMode, SuggestedStartLocation y FileTypeFilter.

    • Usar el PickerViewMode.List predeterminado para folderPicker.ViewMode nos permite crear una visualización tipo lista en el selector de archivos. Esta lista sirve para seleccionar archivos que no son muy visuales, como los documentos.

      Debes considerar la posibilidad de establecer ViewMode en PickerViewMode.Thumbnail si estás usando el selector de archivos para mostrar archivos visuales como imágenes o vídeos. De lo contrario, usa PickerViewMode.List.

      Si estás mostrando archivos visuales como imágenes o vídeos, debes establecer folderPicker.ViewMode en Thumbnail de esta manera:

      
      folderPicker.ViewMode = PickerViewMode.Thumbnail;
      
      
    • Establecer folderPicker.SuggestedStartLocation en el escritorio del usuario mediante PickerLocationId.Desktop permite al usuario comenzar en una ubicación familiar y muy utilizada.

      
      folderPicker.SuggestedStartLocation = PickerLocationId.Desktop;
      
      

      Debes establecer SuggestedStartLocation en la ubicación del sistema de archivos que sea apropiada para el tipo de carpeta que el usuario desea seleccionar. Por ejemplo, si el usuario está seleccionando un carpeta que contiene archivos de música, debes iniciarlos en Música. Esta es simplemente una ubicación de inicio, los usuarios pueden desplazarse a otras ubicaciones mientras estén usando el selector de archivos.

      Por otra parte, no siempre se usa SuggestedStartLocation como ubicación de inicio para el selector de archivos. Para ofrecer al usuario sensación de coherencia, el selector de archivos recuerda la última ubicación que el usuario visualizó y, por lo general, se inicia en esa ubicación.

    • Utilizar folderPicker.FileTypeFilter.Add para especificar los tipos de archivos que el usuario puede ver en el selector de archivos nos permite mantener al usuario concentrado en la selección de una carpeta relevante.

      
      folderPicker.FileTypeFilter.Add(".docx");
      folderPicker.FileTypeFilter.Add(".xlsx");
      folderPicker.FileTypeFilter.Add(".pptx");
      
      

      Nota  Add es el método Append que se proyecta para los desarrolladores de C#.

      Los usuarios solo pueden seleccionar carpetas a través de un FolderPicker, no podrán seleccionar archivos individuales. Sin embargo, mostrar archivos importantes en el FolderPicker ayuda a los usuarios a determinar qué carpeta desean seleccionar. Por ejemplo, al utilizar FolderPicker para seleccionar una ubicación desde la cual importar imágenes, mostrar archivos de imágenes ayuda al usuario a identificar qué elementos se importarán cuando se seleccione la ubicación.

  2. Mostrar FolderPicker para que el usuario pueda seleccionar una sola carpeta

    Después de crear y personalizar un FolderPicker, permite al usuario elegir un archivo al llamar a await en FolderPicker.PickSingleFolderAsync.

    Cuando el usuario elige una carpeta, FolderPicker.PickSingleFolderAsync devuelve un StorageFolder que representa la carpeta seleccionada.

    La muestra de selector de archivos ilustra cómo presentar el selector de archivos para que el usuario pueda elegir una carpeta y cómo capturar la carpeta seleccionada para procesarla.

    
    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)
        StorageApplicationPermissions.FutureAccessList.AddOrReplace("PickedFolderToken", folder);
        OutputTextBlock.Text = "Picked folder: " + folder.Name;
    }
    else
    {
        OutputTextBlock.Text = "Operation cancelled.";
    }
    
    
    

Resumen y siguientes pasos

Si usas código similar al que se muestra aquí, la aplicación mostrará un selector de archivos que permite a los usuarios seleccionar uno o más archivos o carpetas que se pueden abrir con tu aplicación.

Sugerencia  Cuando la aplicación accede a un archivo o a una carpeta a través del selector de archivos, agrega ese elemento a FutureAccessList o MostRecentlyUsedList de la aplicación para realizar el seguimiento del elemento. Obtendrás más información sobre cómo usar estas listas en el tema sobre cómo hacer un seguimiento de los archivos y carpetas usados recientemente.

Para obtener más información acerca de cómo leer archivos y escribir en ellos, consulta Inicio rápido: lectura y escritura de archivos y la Muestra de acceso de archivos. Para aprender cómo trabajar con archivos de imágenes, consulta Inicio rápido: Image e ImageBrush, Inicio rápido: imágenes, y la muestra de imagen XAML.

Si quieres saber más sobre las llamadas al selector de archivos para guardar archivos, consulta Cómo guardar archivos mediante selectores de archivos.

Si quieres que tu aplicación proporcione archivos, una ubicación para guardar o actualizaciones de archivos a otras aplicaciones, consulta Inicio rápido: integrar con contratos del selector de archivos.

Temas relacionados

Muestra de selector de archivos
Muestra de acceso de archivos
Muestra de imagen XAML
Directrices y lista de comprobación de selectores de archivos
Cómo guardar archivos mediante selectores de archivos
Cómo hacer un seguimiento de los archivos y carpetas usados recientemente
Inicio rápido: lectura y escritura de archivos
Inicio rápido: Image e ImageBrush
Inicio rápido: imágenes
Acceso a archivos y permisos de archivo
Inicio rápido: integrar con contratos del selector de archivos
Referencia de espacios de nombres
Windows.Storage.Pickers namespace
Windows.Storage.Pickers.FileOpenPicker class
Windows.Storage.Pickers.FolderPicker class
Windows.Storage.Pickers.PickerLocationId enum
Windows.Storage.Pickers.PickerViewMode enum

 

 

Mostrar:
© 2015 Microsoft