miércoles, 28 de marzo de 2007

e3: ¿cómo funciona read()?

Con bytes.
Si tenemos un lector de bytes
InputStream in= new FileInputStream("fichero");

necesitamos un sitio donde leer bytes: un array de tamaño T
byte[] datos= new byte[T];

Cada vez que llamamos a "read()" le pasamos el sitio donde queremos cargar bytes
int n= in.read(datos)

"read()" hace 2 cosas
1. carga bytes en el array "datos" (hasta un máximo de T, si lo hay)
2. nos devuelve en "n" cuántos bytes ha logrado cargar

Por eso, si "n <= 0" es que no hay nada que cargar: se ha acabado el fichero.

Y si "n > 0", podemos usar "n" datos: entre las posiciones "0" y "n-1" del array.

"read()" nunca lee dos veces los mismos datos, sino que en cada llamada va
avanzando por el fichero y lee los datos que hay a continuación.
De esta forma, llamando a "read()" dentro de un bucle,
vamos obteniendo los bytes sucesivos que contiene el fichero.

Con caracteres.
Lo mismo, pero cambiando "InputStream" por "Reader"
y "byte[]" por "char[]".

No hay comentarios: