Video – Aplicacion con Archivos
El trabajo con archivos muchas veces suele ser una buena solucion para ciertos problemas de almacenamiento de informacion en las aplicaciones, el lenguaje que tocaremos ahora sera C# .NET, menu del post :
- Clases : File , StramReader y StreamWriter
- Verificando Existencia
- Leyendo Archivos
- Escribiendo y Sobreescribiendo Archivos
- Terminando
Para poder trabajar con los archivos, la declaracion de la referencia sera :
using System.IO;
Vamos a iniciar con este tema …
Dentro de la tarea que nos ocupa en este post, hay basicamente 3 clases ligadas al funcionamiento de los archivos, File, StreamReader, StreamWriter,
File : Contiene propiedad y metodos que tienen que ver con caracteristicas distintivas de los archivos, para este post usaremo la clase File para abrir un archivo para sobreescritura (Append) y para verificar la existencia de un archivo.
StreamReader : Es la clase encargada de la lectura de los archivos.
StreamWriter : Es la clase encargada de la escritura de los archivos.
Dentro de la clase File, tenemos el metodo Exists(filename), que lleva como parametro el nombre o ruta de un archivo, y como operacion revisa si este archivo existe. Para ilustrar un ejemplo usaremos el siguiente trozo de codigo :
if(File.Exists("archivo.txt")){ // el archivo existe } else { // el archivo no extiste }
Dentro del if se verifica la existencia del archivo.txt, en caso de que el archivo exista se inicia el bloque que sigue del if, en caso contrario (que no exista el archivo) se ejecuta el bloque de codigo del else.
Dicho en la seccion de clases, la clase que usaremos para leer archivos sera StreamReader veamos un ejemplo de lectura de archivo :
StreamReader reader = new StreamReander("archivo.txt"); //linea 1 string read = reader.ReadLine(); // linea 2 while(read!=null){ // linea 3 Console.WriteLine(read); // linea 4 read = reader.ReadLine(); // linea 5 } // linea 6 reader.Close(); // linea 7
Este ejemplo de arriba es la clara seccion que lee un archivo llamado archivo.txt, veamos unas secciones importantes.
Linea 1 : He aqui la creacion de la instancia de la clase StreamReader, al hacer new StreamReader(filename) , donde filename es el nombre del archivo que deseamos abrir, en este caso archivo.txt.
Linea 2 : Aqui leemos la primera linea del archivo con reader.ReadLine() y guardamos lo leido en la variable read(string), recordando que reader es la variable de instancia de StreamReader y ReadLine es el metodo (funcion dentro de la clase StreamReader) para leer un linea del archivo.
Linea 3 : Este es el inicio de un ciclo, en el verificamos que la variable read(donde almacenamos los datos leidos del archivo) no sea null, sino es null el ciclo continuara leyendo el archivo, y si es null, es decir no hay datos, el ciclo de lectura terminara.
Linea 4 : Escribimos en Consola el contenido de la variable read, que con tiene lo leido del archivo y se actualiza con cada vuelta del ciclo.
Linea 5 : Aqui se actualiza la variable read y se verifica si el archivo continua o termina.
Linea 6 : Termina la llave del while.
Linea 7 : Cerramos el archivo, poner esta parte es muy importante, por que de lo contrario si queremos usar el archivo en otra ocacion nos puede marcar error.
Una version un poco mas efectiva del algoritmo de leer el archivo seria, agregandole un condicional inicial donde se verifique que el archivo en cuestion exista.
if(File.Exists("archivo.txt")){ StreamReader reader = new StreamReander("archivo.txt"); string read = reader.ReadLine(); while(read!=null){ Console.WriteLine(read); read = reader.ReadLine(); } reader.Close(); }
*** Escribiendo ***
La parte de escritura de archvos se logra con la clase StreamWriter, la parte de escritura de un archivo borra la informacion anterior que habi en el archivo en caso de que el archivo exista y si el archivo no existe, sera creado. Veamos El codigo.
StreamWriter writer = new StreamWriter("archivo.txt"); // Linea 1 writer.WriteLine("Programando desde Pharalax.con"); // Linea2 writer.Write("Programando un Lector y escritor de Archivos\n"); // Linea 3 writer.Close(); // Linea 4
Linea 1 : Declaracion de StreamWriter, el archivo sobre el que escribiremos sera archivo.txt, en este caso, writer es la variable que obtiene el identificador de ficheros a escribir y los metodos necesarios para escribir un archivo.
Linea 2 : En esta linea usamos el metodo WriteLine(datos) para agregar informacion al archivo, la informacion va en datos y debe ser string(texto), WriteLine escribe los datos en una linea de texto, y finaliza tal linea con el fin de que se continue escribiendo en la linea siguiente del archivo.
Linea 3 : Write hace la misma funcion que WriteLine, a diferencia de que Write no escribe un fin de linea especifico.
Linea 4 : La linea de cierre de archivo, aqui terminamos la tarea de escritura.
*** Sobreescribiendo ***
Como vimos anteriormente el simple uso de StreamWriter, una vez que cerramos el archivo y lo volvemos a abrir para escritura, este se iniciara a escribir de nuevo, el proceso de sobreescritura significa seguir escribiendo debajo de los datos previamente guardados.
StreamWriter writer = File.AppendText("archivo.txt"); // Linea 1 writer.WriteLine("Programando desde Pharalax.con"); // Linea2 writer.Write("Programando un Lector y escritor de Archivos\n"); // Linea 3 writer.Close(); // Linea 4
En diferencia al codigo de escritura, aqui solo hay una diferencia, que no usamos la creacion de instancia para la clase StreamReader sino que usamos la clase File. File.AppendText(filename), en filename va el nombre del archivo al cual queremos sobreescribir…
Terminando
El almacenamiento en archivos aun es algo habitual y nos brinda muchas posibilidades, como la velocidad de lectura y escritura… y considero algo basico que v como programadores usemos este tipo de herramientas.