Cargar y guardar archivos

Cómo usar selectores de archivos para cargar y guardar datos

La antigua técnica de cargar y guardar archivos sigue bien presente en Windows 8.1 y se ha actualizado para aprovechar la nube con Microsoft OneDrive. Por ejemplo, quieres escribir una aplicación que combine datos de varias fuentes y que guarde los resultados para usarlos más tarde. O bien, es posible que los usuarios quieran crear el archivo en un equipo y cargarlo en la misma aplicación en una tableta portátil.

Nota  Ten en cuenta que este tipo de administración de archivos no es la mejor manera de tratar con grupos de datos pequeños, como la configuración de la aplicación: consulta el tema Cargar y guardar la configuración para ver las mejores maneras de hacerlo en Windows 8. Además, si la aplicación quiere compartir datos con otras aplicaciones, sería mejor que usaras los accesos.

Selectores de archivos

El control de interfaz de usuario para cargar y guardar archivos es el selector de archivos, que está disponible en las aplicaciones con C++, C#, Visual Basic y JavaScript.

Inicio rápido: acceder a archivos con selectores de archivos (aplicaciones de Windows en tiempo de ejecución con C#/VB/C++ y XAML), Cómo continuar la aplicación de Windows Phone después de llamar a un selector de archivos (aplicaciones de la Tienda de Windows Phone com C#/VB/C++ y XAML)

Los selectores de archivos son fáciles de utilizar y requieren una configuración mínima. Tienen este aspecto:

Controles de actividad y progreso

He aquí un breve fragmento de C# que abre un selector de archivos para guardar un archivo con el directorio Foto como ubicación predeterminada.

Importante  Windows 8.1 cambió el uso de DocumentsLibrary, y se te recomienda enfáticamente que no uses más esta ubicación para los archivos generales. Consulta esta publicación en el blog de soluciones para desarrolladores de la Tienda Windows para obtener más información.

Nota  Las aplicaciones escritas para Windows Phone 8.1 deben utilizarPickSingleFileAndContinue en lugar de PickSingleFileAsync. El uso de esta API requiere algunos pasos adicionales, consulta Cómo continuar la aplicación de Windows Phone después de llamar a un selector de archivos (aplicaciones de la Tienda de Windows Phone con C#/VB/C++ y XAML).


 private async void SaveFileButton_Click(object sender, RoutedEventArgs e)
        {
            
            FileSavePicker savePicker = new FileSavePicker();
            savePicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary; 
            // 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";
            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.
                CachedFileManager.DeferUpdates(file);
                // write to file
                await FileIO.WriteTextAsync(file, file.Name);
                // 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.
                FileUpdateStatus status = await CachedFileManager.CompleteUpdatesAsync(file);
                if (status == FileUpdateStatus.Complete)
                {
                   // File was saved
                }
                else
                {
                   // File was not saved
                }
            }
            else
            {
                // File Operation cancelled
            }
        }

Para obtener la muestra de código completa, consulta la muestra de selector de archivos.

Cargar y guardar datos

El uso del selector de archivos para abrir un archivo o la ubicación donde guardarlo es solo una parte de lo que hace. ¡Ahora tienes que leer o escribir datos reales! Para guardar y cargar datos se usa la clase FileIO, como métodos como WriteTextAsync y ReadTextAsync, de esta manera:


try
{
    if (file != null)
    {
        await FileIO.WriteTextAsync(file, "Swift as a shadow");
    }
}
// Handle errors with catch blocks
catch (FileNotFoundException)
{
    // For example, handle file not found
}


Es importante usar el control de excepciones cuando uses código de administración de archivos. Para guardar y cargar datos que ya están en una colección o en otra estructura de datos, puedes usar la serialización para convertir datos en un formato que se pueda guardar y cargar. Para obtener una demostración de esto en acción, consulta el tema sobre cómo guardar una colección en Almacenamiento para la aplicación.

Cargar y guardar sin un selector de archivos

La clase ApplicationsData te brinda una ubicación para guardar y cargar los parámetros de configuración (consulta Cargar y guardar la configuración), pero también es el lugar donde puedes guardar y cargar los datos que son exclusivos de tu aplicación. He aquí un ejemplo que guardará y cargará texto: ideal para cuando tu aplicación debe restaurar información entre inicios de la aplicación. Mediante el uso de la serialización, puedes almacenar una base de datos como datos XML de la misma manera.


        public static async void SaveData()
        {
            string myString = "This is the data I want to save";

            // Add:  using Windows.Storage;
            Windows.Storage.StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;

            // Optionally overwrite any existing file with CreationCollisionOption
            StorageFile file = await localFolder.CreateFileAsync("myData.txt", CreationCollisionOption.ReplaceExisting);

            try
            {
                if (file != null)
                {
                    await FileIO.WriteTextAsync(file, myString);
                }
            }
            catch (FileNotFoundException)
            {
                // Error saving data
            }
        }


        public async void LoadData()
        {
            string myString;    
            Windows.Storage.StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;

            try
            {
                StorageFile sampleFile = await localFolder.GetFileAsync("myData.txt");
                myString = await FileIO.ReadTextAsync(sampleFile);
            }

            catch (Exception)
            {
                // No file to load or error loading it
            }

            // Data is now in myString
        }
    }

Estos métodos se declaran con la palabra clave async, por lo que debes usar await cuando los llames. Consulta Programación asincrónica (aplicaciones de la Tienda Windows) para obtener más información.

Temas relacionados

Temas para desarrolladores de iOS
Recursos para desarrolladores de iOS
Controles de Windows 8 para desarrolladores de iOS
Guía básica de Windows 8 para desarrolladores de iOS
Temas de administración de archivos
Muestra de selector de archivos
Muestra de acceso de archivos
Inicio rápido: lectura y escritura de archivos (JavaScript)
Inicio rápido: acceder a archivos mediante selectores de archivos (aplicaciones de la Tienda Windows con C#/VB/C++ y XAML)
Acceso a datos y archivos (aplicaciones de la Tienda Windows con C#/VB/C++ y XAML)

 

 

Mostrar:
© 2015 Microsoft