Muy buenas a todos hemos visto que
para acceder a un archivo externo desde un programa Java hemos de crear un Stream, un flujo de datos que establece
una comunicación con ese archivo bien sea para leer o para escribir.
La técnica que hemos utilizado en los
dos posts anteriores para leer o escribir en un archivo de texto nos valdría ya
que es sólo hay una única frase, hay poco contenido, sin embargo, si se trata
de un archivo de miles y miles de caracteres esa técnica utilizada es poco
eficiente porque cada vez que nosotros queramos escribir o leer en el archivo
de texto nuestra aplicación se tendría que repetir millones de veces para leer
o escribir cada carácter, esto haría que la aplicación consumiera muchos
recursos y se convirtiera en una aplicación lenta.
Para solucionar esto, existen los buffer. Un buffer es una especie de memoria interna que se coloca físicamente
entre medias de lo que sería nuestro programa de Java y lo que sería el archivo
de texto externo al que queremos acceder. El objetivo que tiene esta memoria
intermedia es que en vez de acceder directamente de nuestro código Java al
archivo externo lo hagamos mediante esta forma la cual la información contenida
en el archivo de texto se vuelca enteramente en el buffer, una vez que está
volcado íntegramente en el buffer es nuestro programa Java quien accede al
buffer para ir descargando poco a poco esa información.
El buffer lo podemos utilizar tanto
para leer como para escribir en un archivo externo.
Para crear un buffer utilizamos la
clase BufferedReader la cual tiene
un método readLine() en el caso de
que queramos leer un archivo de texto. Para el caso que quisiéramos escribir en
un archivo de texto utilizaríamos la clase BufferedWriter
cuyo método es writerLine().
Para saber más acerca de estas clases
se recomienda ir a la API de Java
para profundizar un poco más sobre ellas.
Para verlo todo esto en la práctica vamos a utilizar el ejemplo Acceso_Fichero.java en el cual ya hemos trabajado en él en el post Leyendo Ficheros, lo que hacía es leer la información que contenía un archivo de texto que era tan solo una frase:
Si en lugar de una frase tuviéramos 500 o más frases:
Tal y como tenemos el código
consumiría muchos recursos además de que la aplicación se haría lenta, para
ello creamos un buffer y lo hacemos dentro de la cláusula try después de la clase FileReader
y le tenemos que pasar como argumento una instancia de tipo Reader como ya la tenemos creada a la
que hemos llamado entrada, le
pasamos esta instancia:
try {
FileReader
entrada = new FileReader("C:/Users/usuario/Desktop/ejemplo.txt");
BufferedReader mibuffer = new BufferedReader(entrada);
A continuación va a ver que modificar
y eliminar algunas cosas para dejar el código dentro de la cláusula try de la siguiente forma:
try {
FileReader
entrada = new FileReader("C:/Users/usuario/Desktop/ejemplo.txt");
BufferedReader
mibuffer = new BufferedReader(entrada);
String linea = "";
while(linea!=null) {
linea=mibuffer.readLine();
System.out.println(linea);
}
Nos creamos una variable de tipo String a la que llamamos línea que va almacenar la información
del archivo línea por línea, luego la condición del while mientras que la línea sea diferente a null va a leer el texto y lo imprimirá por consola mediante un System.out.
Probamos, vemos que nos aparece toda la información del archivo de texto en consola:
Si tenéis dudas, sugerencias… podéis
comentarlo a través de los comentarios del blog. Saludos!
12.3 ESCRIBIENDO FICHEROS <<
>> 12.5 LEYENDO ARCHIVOS COMO BYTE
No hay comentarios:
Publicar un comentario