Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/08/2004, 06:14
ZeroZ
 
Fecha de Ingreso: junio-2002
Ubicación: España
Mensajes: 348
Antigüedad: 22 años, 7 meses
Puntos: 8
Un par de dudas con ficheros

estoy trabajamdo con ficheros (RandomAccessFile) en una aplicación, pero me ha surgido una duda
al guardar Strings uso writeUTF(); que usa 2 bytes para indicar el numero de bytes que usa la cadena
mas los bytes que formen dicha cadena.
El problema surge cuando a la hora de saltar los registros debo saber los bytes de la cadena pero es imposible
ya que eso depende del usuario.
Me gustaria saber si hay otro método que usa un número determinado de bytes o alguna forma para saber cuanto ocupa cada registro.
Por si no me he explicado claramente pongo parte de código:

ESCRIBIR EN EL FICHERO:
Código:
RandomAccessFile salida=new RandomAccessFile("Fichero.txt","rw");
salida.seek(salida.length());

System.out.println("Introduce el titulo: ");
salida.writeUTF(leer.readLine());
System.out.println("Introduce volumen: ");
salida.writeInt(ut.leerEntero());
System.out.println("Dia de la fecha");
salida.writeInt(validarDia(ut.leerEntero()));
System.out.println("Mes de la fecha");
salida.writeInt(validarMes(ut.leerEntero()));
System.out.println("Año de la fecha");
salida.writeInt(validarAnio(ut.leerEntero()));
System.out.println("Materia");
salida.writeUTF(leer.readLine());
LEER:
Código:
RandomAccessFile entrada=new RandomAccessFile("Fichero.txt","r");
boolean seguir=true;
int i=0;
while (seguir){
		try{
			System.out.println(entrada.readUTF());
			System.out.println(entrada.readInt());
			System.out.println(entrada.readInt());
			System.out.println(entrada.readInt());
			System.out.println(entrada.readInt());
			System.out.println(entrada.readUTF());
			i++;
			entrada.seek(i*???????);
		}catch(EOFException e){
			seguir=false;
		}
Y ya que estamos....¿Hay otra forma de preguntar por el final del fichero sin el catch, como en C, preguntando por EOF?

Saludos