import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
public class lectura {
public static void main(String[] args) throws IOException {
File fichero = new File("MisDiscosFavoritos.dat");
//declara el fichero de acceso aleatorio
RandomAccessFile file = new RandomAccessFile(fichero, "rw");
//
int id, posicion;
char titulo[] = new char[30], aux;
char autor[] = new char[20], aux1 ;
char anyo[] = new char[5], aux2;
posicion = 0; //para situarnos al principio
for(;;){ //recorro el fichero
file.seek(posicion); //nos posicionamos en posicion
id = file.readInt(); // obtengo id de empleado
//recorro uno a uno los caracteres del apellido
for (int i = 0; i < titulo.length; i++) {
aux = file.readChar();
titulo[i] = aux; //los voy guardando en el array
}
for (int y = 0; y < autor.length; y++) {
aux1 = file.readChar();
autor[y] = aux1; //los voy guardando en el array
}
for (int x = 0; x < anyo.length; x++) {
aux2 = file.readChar();
anyo[x] = aux2; //los voy guardando en el array
}
//convierto a String el array
String titulos = new String(titulo);
String autores = new String(autor);
String anyos = new String(anyo);
if(id >0)
System.out.printf("ID: %s, titulo: %s, autor: %s, fecha: %s %n",
id, titulos.trim(), autores.trim(), anyos.trim());
//me posiciono para el sig empleado, cada empleado ocupa 36 bytes
posicion= posicion + 112;
//Si he recorrido todos los bytes salgo del for
if (file.getFilePointer() == file.length())break;
}//fin bucle for
file.close(); //cerrar fichero
}
}
resultado:
ID: 1, titulo: For Emma, Forever Ago, autor: Bon Iver, fecha: 2007
ID: 2, titulo: Mismo sitio, distinto lugar, autor: Vetusta Morla, fecha: 2017
ID: 3, titulo: In Our Nature, autor: Jos� Gonz�lez, fecha: 1993
Exception in thread "main" java.io.EOFException
at java.base/java.io.RandomAccessFile.readChar(RandomAccessFile.java:813)
at tarea1.lectura.main(lectura.java:34)
alguien sabe por que falla?