0 votos
por (120 puntos) en Java
Hola, tengo que trabajar con un fichero binario, que almacena estos datos:

int String int int int int

int String int int int int

int String int int int int

int String int int int int

..................................

Creé un método para leer el contenido del fichero:

<pre>public static void leerFichero (String nombreFichero) {
        ObjectInputStream ois = null;
        try {
            ois = new ObjectInputStream(new FileInputStream(nombreFichero));
            while(true) {
                int DNI = ois.readInt();
                Char Letra = ois.readChar();
                int Codigo = ois.readInt();
                int dia = ois.readInt();
                int mes = ois.readInt();
                int agno = ois.readInt();

                System.out.printf("%d %s %d %d %d %d%n", DNI, Letra, Codigo, dia, mes, agno);
            }
        }
         catch (EOFException e) {
             try {
                 if(ois!=null) ois.close();
             }
             catch(IOException e1) { }
              }
         catch (IOException e) { }
    }
Y en el main puse: leerFichero(nombre); asignándole a nombre el nombre del fichero binario y me presentó por pantalla correctamente el fichero.

Ahora lo que quiero hacer es que el primer dato que almacena (DNI), me diga la cantidad de veces que aparece; es decir, que si el fichero es:

18181818 S 100 10 10 2010

19191919 D 101 11 11 2011

20000001 X 102 23 12 2012

18181818 T 103 19 03 2001

Me diga si le introduzco el DNI 18181818 : 2, y si meto los demás que diga 1.

He pensado en crear una tabla del fichero binario, que no sé como hacerlo, y después hacer algo tipo:

<pre>public int contar(int DNI) {
 if(T[i].dni()==DNI) { cuenta++;}
return cuenta;
}
Sólo que más extendido ese código, añadiendo bloques try-catch...

Ayuda ;)


1 Respuesta

0 votos
por (8.5k puntos)
Buenas otra vez,

Podías haber seguido en el otro post, ya que va sobre lo mismo. Solo insistirte una vez más que según tienes el código, puede ocurrir esto:

008181818 S 100 10 10 2010

 19191919 D 101 11 11 2011

 20000001 X 102 23 12 2012

 08181818 T 103 19 03 2001

Y 8181818 tendrá dos ocurrencias, cuando en realidad son distintos...


Preguntas relacionadas

0 votos
1 respuesta
preguntado por miguel0953 (20 puntos) Ene 28, 2016 en Java
0 votos
0 respuestas
preguntado por jubalo (200 puntos) Ene 28, 2016 en Java
0 votos
2 respuestas
preguntado por Lili (20 puntos) Ene 28, 2016 en Java
0 votos
6 respuestas
preguntado por sdh (120 puntos) Ene 28, 2016 en Java
0 votos
1 respuesta
preguntado por jubalo (200 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

...