Lectura y escritura de archivos planos en el Isolated Storage en Windows Phone 7

En un artículo anterior vimos la introducción al concepto del almacenamiento de datos en Windows Phone 7 usando el Almacenamiento Aislado. Una de las formas de almacenar datos que mencionamos son los archivos de texto.

A continuación veremos un sencillo ejemplo donde vemos cómo almacenar datos en un archivo de texto en el Almacenamiento Aislado, y cómo recuperar los datos desde el mismo.

Básicamente, el ejemplo hace uso de la clase IsolatedStorageFileStream, la cual nos provee los métodos para leer, escribir, guardar y abrir archivos. Al ser una clase que hereda de la clase FileStream, podemos usarla en combinación, por ejemplo, con objetos Stream para las operaciones de lectura y/o escritura.

Como primer paso para el ejemplo, crear una aplicación Silverlight para Windows Phone en Visual Studio, y adicionar dos campos de texto en un formulario para captura de datos, un control ListBox para visualización de los datos del archivo, y finalmente dos botonespara guardar y leer datos.

wp7_isolatedstorage_textfile_01

Luego, implementaremos la funcionalidad del botón de guardado de datos con el siguiente código.

        private void btnGuardar_Click(object sender, RoutedEventArgs e)
        {
            // Obtener instancia del Almacenamiento Aislado
            IsolatedStorageFile isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication();

            // Instancia de StreamWriter para crear el archivo
            using (StreamWriter writer = new StreamWriter(new IsolatedStorageFileStream(nombreArchivo, FileMode.Append, FileAccess.Write, isolatedStorage)))
            {
                // Copiado de datos al archivo
                writer.WriteLine(String.Format("Nombre: {0}", txtNombre.Text));
                writer.WriteLine(String.Format("Ciudad: {0}", txtCiudad.Text));
                writer.Close();
            }
        }

Acá lo que estamos haciendo es guardar la información que ingresa el usuario en la pantalla de captura de datos, y guardándola en un archivo del Almacenamiento Aislado. Al especificar el parámetro FileMode.Append del constructor de la claseIsolatedStorageFileStream, estamos indicando que siempre se acumulen los datos en el archivo, es decir, podemos ingresar varios datos en los campos de texto, y estos se irán acumulando en el archivo. También podría especificarse que, por ejemplo, se sobreescriba el archivo, pero esto ya depende de la necesidad específica.

Luego implementamos la funcionalidad del botón de lectura de datos con el siguiente código.

        private void btnLeer_Click(object sender, RoutedEventArgs e)
        {
            // Obtener instancia del Almacenamiento Aislado
            IsolatedStorageFile isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication();

            // Verificar si el archivo existe para evitar errores
            if (isolatedStorage.FileExists(nombreArchivo))
            {
                // Instancia de StreamReader para obtener y leer archivo almadenado
                using (StreamReader reader = new StreamReader(isolatedStorage.OpenFile(nombreArchivo, FileMode.Open, FileAccess.Read)))
                {
                    // Lectura del archivo linea por linea, escribiéndolo en el control en pantalla.
                    while (!reader.EndOfStream)
                    {
                        lstContenidoArchivo.Items.Add(reader.ReadLine());
                    }
                }
            }
            else
            {
                MessageBox.Show("El archivo a leer no existe!");
            }
        }

Lo que se hace en este código es obtener el archivo previamente creado, y luego hacer una lectura línea por línea para mostrarlo en el control ListBox que adicionamos en pantalla. Como buena práctica, agregar siempre la verificación de existencia previa del archivo para evitar errores de lectura si este no existe.

Una vez hecho esto, podemos ejecutar la aplicación y ver su comportamiento.

wp7_isolatedstorage_textfile_02

Descarga el código fuente de este ejemplo en este enlace. ¡Espero que les sea de utilidad!

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: