0 votos
por (20 puntos) en Java

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?

Por favor, accede o regístrate para responder a esta pregunta.

Preguntas relacionadas

0 votos
0 respuestas
0 votos
1 respuesta
preguntado por Bafina (20 puntos) Ene 28, 2016 en Java
0 votos
1 respuesta
0 votos
0 respuestas
preguntado por martintabordagarcia (20 puntos) Ene 28, 2016 en Java
Bienvenido a Dudas de Programación, donde puedes hacer preguntas y recibir respuestas sobre los problemas más frecuentes de los lenguajes de programación, frameworks de desarrollo y bases de datos que utilices. Foro de Línea de Código

Categorías

...