Compartir a través de


Guardar un archivo con un seleccionador de archivos

Las APIs importantes

Use FileSavePicker para permitir a los usuarios especificar el nombre y la ubicación donde quieren que la aplicación guarde un archivo.

Nota:

 Para obtener un ejemplo completo, consulte el ejemplo del selector de archivos.

Nota:

En una aplicación de escritorio (que incluye aplicaciones WinUI), puede usar el espacio de nombres Microsoft.Windows.Storage.Pickers para acceder a los selectores de archivos y carpetas. Este espacio de nombres está disponible en Windows App SDK versión 1.8 o posterior. Las API de este espacio de nombres están diseñadas para funcionar sin problemas con aplicaciones WinUI, lo que proporciona una experiencia coherente en diferentes tipos de aplicaciones.

Si es necesario, todavía puede usar selectores de archivos y carpetas de Windows.Storage.Pickers. Sin embargo, si la aplicación de escritorio requiere elevación para ejecutarse, necesitará un enfoque diferente porque estas API no están diseñadas para usarse en una aplicación con privilegios elevados. Para obtener un ejemplo, vea FileSavePicker.

Prerrequisitos

FileSavePicker: paso a paso

Use un FileSavePicker para que los usuarios puedan especificar el nombre, el tipo y la ubicación de un archivo que se va a guardar. Cree, personalice y muestre un objeto de selector de archivos y, a continuación, guarde los datos mediante el objeto StorageFile devuelto que representa el archivo seleccionado.

  1. Crear y personalizar el 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";
    

    Establezca las propiedades en el objeto del selector de archivos que sean relevantes para los usuarios y la aplicación. En este ejemplo se establecen tres propiedades: SuggestedStartLocation, FileTypeChoices y SuggestedFileName.

    • Dado que nuestro usuario guarda un documento o archivo de texto, el ejemplo establece SuggestedStartLocation en la carpeta local de la aplicación mediante LocalFolder. Establezca SuggestedStartLocation en una ubicación adecuada para el tipo de archivo que se guarda, por ejemplo, Música, Imágenes, Vídeos o Documentos. Desde la ubicación inicial, el usuario puede navegar a otras ubicaciones.

    • Dado que queremos asegurarnos de que nuestra aplicación pueda abrir el archivo después de guardarlo, usamos FileTypeChoices para especificar los tipos de archivo que admite el ejemplo (documentos de Microsoft Word y archivos de texto). Asegúrese de que la aplicación admite todos los tipos de archivo que especifique. Los usuarios podrán guardar su archivo como cualquiera de los tipos de archivo que especifique. También pueden cambiar el tipo de archivo seleccionando otro de los tipos de archivo que especificó. La primera opción de tipo de archivo de la lista se seleccionará de forma predeterminada: para controlarlo, establezca la propiedad DefaultFileExtension.

    Nota:

     El selector de archivos también usa el tipo de archivo seleccionado actualmente para filtrar los archivos que muestra, de modo que solo se muestren los tipos de archivo que coincidan con los tipos de archivos seleccionados al usuario.

    • Para ahorrar al usuario algo de escritura, el ejemplo establece un SuggestedFileName. Haga que el nombre de archivo sugerido sea relevante para el archivo que se va a guardar. Por ejemplo, como Word, puede sugerir el nombre de archivo existente si hay uno o la primera línea de un documento si el usuario guarda un archivo que aún no tiene un nombre.

    Nota:

     Los objetos FileSavePicker muestran el selector de archivos usando el modo de vista PickerViewMode.List.

  2. Mostrar fileSavePicker y guardar en el archivo seleccionado

    Para mostrar el selector de archivos, llame a PickSaveFileAsync. Una vez que el usuario especifica el nombre, el tipo de archivo y la ubicación, y confirma guardar el archivo, PickSaveFileAsync devuelve un objeto StorageFile que representa el archivo guardado. Puede capturar y procesar este archivo ahora que tiene acceso de lectura y escritura a él.

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

El ejemplo comprueba que el archivo es válido y escribe su propio nombre de archivo en él. Consulte también Creación, escritura y lectura de un archivo.

Sugerencia

 Siempre debe comprobar el archivo guardado para asegurarse de que es válido antes de realizar cualquier otro procesamiento. A continuación, puedes guardar contenido en el archivo según corresponda para la aplicación y proporcionar el comportamiento adecuado si el archivo seleccionado no es válido.

Consulte también

Windows.Storage.Pickers

Archivos, carpetas y bibliotecas

Integración con contratos de selector de archivos

Creación, escritura y lectura de un archivo