Ver Mensaje Individual
  #3 (permalink)  
Antiguo 15/10/2011, 06:04
Avatar de chuidiang
chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: Diferencia (Comparativa) Clases Lectura de Archivos en JAVA

Hola:

En general los stream leen bytes en bruto mientras que los reader son capaces de leer caracteres según alguna codificación de caracteres. Los primeros suelen leer byte[] o byte, mientras que los segundos char[] o char.

InputStreamReader es el puente entre ellos. Es una clase que coge un Stream y te lo ofrece como un reader, de forma que a partir de un Stream (que lee bytes) podrías leer caracteres.

El Buffered tiene un buffer interno de lectura. Si no usas Buffered, cada vez que hagas una lectura, haces un acceso real a disco (o al medio del que estés leyendo). Si usas Buffered y lees una vez, es posible que la clase Buffered decida leer más y guardarlo en memoria para entregártelo la siguiente vez que quieras leer. Si tienes un fichero grande y vas a intenter leer caracter a caracter por el motivo que sea, suele ser más eficiente usar un Buffered que un no Buffered. Si vas a leer siempre trozos grandes de golpe, posiblemente el Buffered no te aporte demasiada mejora en eficiencia.

Luego, aparte de las que pones, hay más variantes, como DataInputStream, capaz de leer los bytes pero como enteros, float, doubles, etc. O ObjectInputStream, capaz de leer clases java de golpe.

Resumiendo, lo más básico es el InputStream que sólo permite leer bytes. Luego hay más clases como las que mencionas que son "capas" por encima de InputStream, permitiendo leer datos a más alto nivel (caracteres, float, double, String, etc).

Se bueno.
__________________
Apuntes Java
Wiki de Programación