Tutorial de manejo de archivos

Anuncio
Tutorial de manejo de archivos
Por el docente Nelson Rojas Núñez
En este documento les presentaré la forma de utilizar archivos en un ejemplo sencillo. El tutorial espera
poder lograr la creación de archivos de texto plano (txt) y luego poder mostrar el contenido de cada uno de
ellos.
Para eso vamos a necesitar los siguientes ingredientes:
1 PC con Windows
Visual Basic 2008 Express o Visual Studio 2008
Ganas de trabajar a gusto
Paso 1. Crearemos una aplicación de Escritorio con Visual Basic 2008 Express (o Visual Studio 2008). El
nombre de la aplicación será Block.
Revise la imagen anterior como referencia.
Una vez que hayamos dado clic al botón aceptar tendremos el diseño del formulario tal como se ve en la
siguiente imagen:
Para poder manipular el texto vamos a crear dos botones, uno para abrir un documento existente y otro
para guardar un documento.
El diseño del formulario debería verse más o menos como la siguiente imagen:
Lo único que hemos modificado es la propiedad Text de cada uno de los botones (ver la imagen que
continúa como referencia)
En button1 hemos puesto como valor Abrir en la propiedad Text. En cambio, en button2, el valor ingresado
ha sido Guardar.
Como la idea es que el formulario sea capaz de guardar y abrir texto, entonces vamos a necesitar un
espacio donde poder escribir. Para eso pondremos un cuadro te texto (TextBox) que nos permitirá escribir y
mostrar información hacia y desde el archivo.
Dibujo representativo de un Textbox en la paleta de herramientas.
El diseño del formulario debería verse más o menos así:
Claramente un Textbox recién arrastrado a la ventana no se ve de esa forma, así que lo que se modificó
fueron dos propiedades del Textbox1:
Se cambió la propiedad Multiline desde el valor False al valor True. Y la propiedad ScrollBars desde None a
Vertical.
Estas propiedades permiten entregarle algunos aspectos de diseño y funcionalidad mejorada a los cuadros
de texto. Multiline permite escribir y manipular múltiples líneas dentro del cuadro de texto.
Por su parte, ScrollBars permite mostrar la barra de desplazamiento vertical, de tal manera de poder revisar
el texto desde arriba hacia abajo (y viceversa usando la rueda del ratón, la que también es conocida como
Scroll)
Para darle una funcionalidad inicial, lo que vamos a hacer es doble clic sobre el botón que tiene por texto
Guardar.
Al realizar dicha acción debería aparecer la vista de código que se encargará de realizar cierto trozo de
código cuando el usuario presione dicho botón.
El código debería verse más o menos así:
Public Class Form1
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End Sub
End Class
Aquello que está entre Private Sub Button2_Click… y End Sub es el trozo de código que se va a ejecutar
cuando el usuario realiza la acción clic.
En dicho caso, lo que vamos a hacer es asumir que el contenido de Textbox1 tiene información y vamos a
grabar un archivo llamado documento.txt dentro del disco C: en la raíz del mismo, es decir, el archivo se
ubicará dentro de c:\documento.txt.
Para traducir esta acción en código deberíamos llegar a tener algo como la imagen siguiente:
Ahora veamos qué hace cada línea.
Las primeras líneas con Dim crean variables de acuerdo al tipo definido luego de la palabra reservada As.
nombreArchivo es de tipo String y archivoFisico es de tipo StreamWriter. En español, String se reconoce
como una variable de Cadena de Caracteres y StreamWriter es un Escritor de Flujo (nombre con el que se
conoce también a los archivos). En primera instancia, cuando le pasamos el nombre del archivo a la
declaración de New IO.StreamWriter(nombreArchivo) estamos creando el archivo que indicamos y lo
dejamos listo para escribir en él.
archivoFisico.Write(Textbox1.Text) guarda el contenido que esté escrito dentro del control de Texto. Dicho
contenido va a dar al archivo físico en disco.
La línea archivoFisico.Flush( ) permite refrescar los datos que estén aún en memoria RAM y enviar dichos
datos directo al archivo físico en disco.
La línea final, archivoFisico.Close( ) cierra el archivo físico.
Es importante cerrar los archivos, pues cuando quedan abiertos pueden perderse algunos datos. La teoría
es similar al hecho de desconectar el pendrive con seguridad, en vez de hacerlo a “lo compadre”. Cuando se
saca el pendrive sin usar la opción de expulsar o desconectar con seguridad puede producirse algún tipo de
pérdida, o que finalmente el pendrive quede inutilizable.
Probaré ejecutando el programa y escribiendo algo de texto en él para ver cómo es que se comporta, y si
acaso graba o no el archivo.
Esta es la vista antes de presionar el botón Guardar.
Luego de guardar el archivo apareció dentro de la carpeta indicada:
Al darle doble clic lo abre el programa predeterminado por Windows:
Así que al menos ya hay datos dentro del archivo, aunque el acento parece que se fue muy, muy lejos.
De todos modos, la tarea de almacenamiento está terminada.
Lo que nos interesa ahora es poder hacer el proceso inverso. Cómo rescatar el archivo creado usando el
botón con el texto Abrir.
Para eso hacemos doble clic en dicho botón (estando eso sí en modo de diseño del formulario)
Al igual que hicimos con el botón anterior, escribiremos el código entre las líneas Private Sub
Button1_Click… y End Sub.
La primera línea, al igual que en caso anterior sirve para almacenar el nombre del archivo que se pretende
leer. En este caso “C:\documento.txt”
El segundo elemento se crea como archivoLectura. Esta vez, se crea la variable como un Lector de Flujo o
StreamReader. Tal como en el caso anterior se le pasa la ruta del archivo para que entienda desde donde
debe leer los datos.
Luego, ponemos todo el texto del archivo dentro del TextBox1. Para eso utilizamos la propiedad Text del
Textbox1 y le asignamos lo que nos devuelva el llamado a la función ReadToEnd del archivoLectura (Read
To End quiere decir Leer hasta el final)
Una vez que ya se ha puesto el texto completo en el textbox, procedemos finalmente a cerrar el archivo
usando la acción Close de archivoLectura.
Bueno, eso es lo que respecta al tema de los archivos.
Preguntas que debieran hacerse
Pregunta: ¿Es posible cambiar el nombre del archivo por uno indicado por el usuario?
Respuesta: Sí es posible y la forma de hacerse es muy variable. La más sencilla de hacerlo es usar la función
InputBox.
Vea qué pasa con el siguiente código en las siguientes figuras
Cambios en el botón con el texto Guardar
Cambios en el botón con el texto Abrir
Prueba de InputBox al presionar el botón que tiene el texto Abrir.
Obviamente hay otras formas de Guardar y de Leer. Para quienes quieran ahondar en el tema pueden
revisar el uso de OpenFileDialog y SaveFileDialog (búsqueda recomendada en Google: cómo usar
SaveFileDialog con Visual Basic .Net)
Descargar