Académique Documents
Professionnel Documents
Culture Documents
INF 103
Almacenamiento secundario
La memoria de la computadora es considerado almacenamiento primario. El almacenamiento primario es voltil. Cuando queremos preservar la informacin es necesario guardarlo en un almacenamiento de tipo no voltil: este es el almacenamiento secundario.
Archivos
Son el almacenamiento secundario por excelencia. Existen varios tipos de archivos:
Archivos de texto
Son aquellos archivos que slo almacenan datos de tipos carcter o cadenas de caracteres. Son utilizados para:
Informacin del tipo registro. Guardar informacin que no necesita de un formato especfico.
Guardar informacin de cualquier otro tipo en estos archivos no es una solucin ptima.
A diferencia de los archivos de texto, en estos archivos se almacenan datos de todo tipo (char, long, float, int, etc.). Los tipos de datos que se almacenan en estos archivos se guardan de manera binaria, de acuerdo a la extensin que tengan los tipos de datos.
Los datos se guardan de manera secuencial, es decir, uno detrs de otro. Cuando queremos acceder a un dato en este tipo de archivos, tenemos que leer cada dato, hasta encontrar aquel que buscamos.
Para traer la informacin, un programa abre un stream sobre una fuente de informacin (un fichero, memoria, un socket) y lee la informacin serialmente, de esta forma:
Similarmente, un programa puede enviar informacin a un destino externo abriendo un stream sobre un destino y escribiendo la informacin serialmente, de esta forma:
No importa de donde venga o donde vaya la informacin y tampoco importa el tipo de los datos que estn siendo ledos o escritos, los algoritmos para leer y escribir son casi siempre los mismos.
Leer
abrir un stream mientras haya informacin leer informacin cerrar el stream
Escribir
abrir un stream mientras haya informacin escribir informacin cerrar el stream
El paquete java.io contiene una coleccin de clases stream que soportan estos algoritmos para leer y escribir. Estas clases estn divididas en dos rboles basndose en los tipos de datos (caracteres o bytes) sobre los que opera.
Archivos de Texto
Para poder leer archivos de texto en Java debemos crear un objeto de tipo BufferedReader. BufferedReader es una clase que contiene mtodos predefinidos para poder leer una secuencia de bits.
Para poder guardar archivos de texto en Java debemos crear un objeto de tipo PrintWriter. PrintWriter es una clase que contiene mtodos predefinidos para escribir datos mediante una secuencia de bits.
BufferedReader
Ya que tenemos el objeto tipo BufferedReader podemos utilizar varios mtodos para leer, l ms comn es:
fileIn.readLine();
Este mtodo lee una lnea y la devuelve o devuelve null si llegamos al final del archivo y no hay nada que leer.
PrintWriter
Ya que tenemos el objeto PrintWriter podemos utilizar varios mtodos para escribir, los ms comunes son:
fileOut.print(String); fileOut.println(String);
Estos dos mtodos reciben un String y lo imprimen en el archivo, el segundo mtodo le pone un carcter de fin de lnea al final.
Hasta ahora, toda la E/S (I/O) ha sido con la consola. Los objetos ms primitivos de E/S con la consola System.in, System.out y System.err estn comprendidos dentro de BufferedReader y PrintWriter que permiten una interfaz ms conveniente y refinada. Pero tambin puede ser usados para el manejo de archivos.
El argumento nombredearchivo que aparece en las declaraciones es simplemente un string que indica el nombre del archivo que se desea abrir. Cuando se abre un archivo para grabar (output), su contenido se borra. Si queremos abrir un archivo para agregar (append) informacin, debemos utilizar el constructor FileWriter en la declaracin fileApnd. Si le pasamos false a este constructor, logramos el mismo efecto que el constructor para la declaracin de fileOut Si abrimos un archivo que no existe para grabar sobre l, ste ser creado por el sistema y comenzar, desde luego, estando vaco.
Existen dos reas que requieren atencin adicional cuando manejamos E/S con archivos:
La inicializacin de los objetos de E/S con archivos, puede ser una tarea no tan exitosa. Puede ser que archivo que se desea abrir no encuentre, lo cual lanza la excepcin FileNotFoundException. Esto podrar ser porque la cadena entregada al constructor puede ser el nombre de un archivo inexistente o que no se encuentra en el directorio de trabajo del programa. Al momento de leer o escribir a un archivo se puede lanzar la excepcin IOException.
Cada archivo abierto ocupa recursos del sistema, por tanto debemos cerrar cada archivo que deja de utilizarse. infile.close(); outFile.close(); Tanto el mtodo close de la clase BufferedReader como el de la clase PrintWriter lanzan la excepcin IOException.
En resumen
3.
Abrir el archivo. Realizar la operacin deseada: leer y/o escribir datos en el archivo. Cerrar el archivo.