Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Aikanáro Anário en 25 Octubre 2011, 02:02 am



Título: Pregunta sobre BufferedReader
Publicado por: Aikanáro Anário en 25 Octubre 2011, 02:02 am
Estaba viendo el siguiente vídeo donde explican como manejar streams de texto en java con la librería IO etc:

VDQodLDdKoY

Él lo que está haciendo es crear un archivo, luego escribirlo (modificarlo) y por último leerlo y presentarlo por consola.

En el minuto 7:47 (http://www.youtube.com/watch?v=VDQodLDdKoY&list=PL6CB9511C76756471&index=53#t=7m47s) empieza a crear la clase que lee el archivo. Mi pregunta está en el minuto 8:43 (http://www.youtube.com/watch?v=VDQodLDdKoY&list=PL6CB9511C76756471&index=53#t=8m43s) él dice que es muy complicado manejar un string y que hay que cargarlo en memoria con BufferedReader, pero eso no me queda muy claro, yo lo hice sin utilizar el BufferedReader, utilicé directamente el FileReader y funciona igual ¿cuál es la diferencia? ¿hay algo que sí se puede hacer con el BufferedReader que no con el FileReader?


Título: Re: Pregunta sobre BufferedReader
Publicado por: Valkyr en 28 Octubre 2011, 01:06 am
Prácticamente tienen la misma funcionalidad. A mi, personalmente, me gusta usar BufferedReader por el tema de poder leer una línea completa en una sola orden.

Si te fijas en la documentación de las dos clases:

http://download.oracle.com/javase/1.4.2/docs/api/java/io/FileReader.html
http://download.oracle.com/javase/1.4.2/docs/api/java/io/BufferedReader.html

FileReader hereda de InputStreamReader que a su vez hereda de Reader. Ésta última es común tanto para FileReader como para BufferedReader.

La mayor diferencia que existe entre las dos es que con BufferedReader puedes pasarle cualquier subclase de Reader como parámetro en el constructor. Por ejemplo, para leer de teclado es bastante útil. Sin embargo, por lo que veo en la documentación, con FileReader es más orientado a la lectura de ficheros únicamente y no a un flujo de entrada. Aunque con FileReader creo que también sería posible leer de teclado (por el constructor que se le pasa un descriptor ya que podría pasarsele el descriptor de la entrada estandar) lo veo más comodo con BufferedReader.

Espero que te sirva para algo.

Un saludo.