Java - No se por que me falla

 
Vista:
sin imagen de perfil

No se por que me falla

Publicado por alberto (1 intervención) el 25/10/2022 18:51:16
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?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder