> Al cifrar me salen ficheros demasiado grandes. He escrito esto: ..."
> int nDatos = entrada.read(datos);
> while (nDatos > 0) {
> String texto = codificador.codifica(datos);
pues muy mal: sólo puedes codificar "nDatos";
repasa los métodos de la clase base64.Codificador.
> Al descifrar me salen ficheros demasiado grandes. He escrito esto: ..."
> int nDatos = entrada.read(datos);
> while (nDatos > 0) {
> String criptograma = new String(datos);
> String mensaje = descifrador.descifra(criptograma);
pues muy mal: sólo puedes descifrar "nDatos";
repasa los constructores de la clase String.
Mostrando entradas con la etiqueta e3. Mostrar todas las entradas
Mostrando entradas con la etiqueta e3. Mostrar todas las entradas
jueves, 29 de marzo de 2007
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[]".
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[]".
Suscribirse a:
Entradas (Atom)