uva.infor.soft
Class BinaryFile<E>

java.lang.Object
  extended by uva.infor.soft.BinaryFile<E>
Type Parameters:
E - El tipo de los datos almacenados en el fichero
All Implemented Interfaces:
java.lang.Iterable<E>, java.util.Iterator<E>

public class BinaryFile<E>
extends java.lang.Object
implements java.lang.Iterable<E>, java.util.Iterator<E>

La clase BinaryFile representa a un fichero binario que almacena una secuencia de datos del mismo tipo (equivalente a la construcción en Pascal file of tipo). Para ello ha sido necesario usar genericidad, y por lo tanto al definir una variable de este tipo se debe añadir a BinaryFile, entre corchetes angulares, el tipo de datos almacenado, teniendo en cuenta que si es un tipo primitivo se debe usar la clase asociada. A continuación se muestran ejemplos de la definición de un fichero de enteros, de arrays de enteros y de arrays bidimensionales de strings:

El uso de genericidad dificulta el definir wrappers estáticos, y por lo tanto para utilizar esta clase se debe usar dot-notation.

He definido un iterador sobre esta clase para poder usar bucles for-each sobre ella.

Since:
28/04/2010
Author:
César Vaca Rodríguez

Constructor Summary
BinaryFile(java.lang.String nomFich, int modo)
          Constructor de un fichero binario y apertura del mismo.
 
Method Summary
 void close()
          Cierra el fichero, permitiendo que otros programas puedan acceder a él.
 boolean hasNext()
          Uso interno
 boolean isEndOfFile()
          Comprueba si quedan o no datos por leer en el fichero.
 java.util.Iterator<E> iterator()
          Uso interno
 java.lang.String msgError()
          Permite obtener un String que describe el último error producido.
 E next()
          Uso interno
 E read()
          Lee un dato del tipo asociado del fichero.
 void remove()
          Uso interno
 int status()
          Permite comprobar si la última operación sobre el fichero se ha realizado correctamente.
 void write(E dato)
          Escribe el dato en el fichero.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BinaryFile

public BinaryFile(java.lang.String nomFich,
                  int modo)
Constructor de un fichero binario y apertura del mismo.

Parameters:
nomFich - Ruta y nombre del fichero
modo - Modo de apertura:
  • MODO_LECTURA: Abre un fichero existente para lectura de datos.
  • MODO_ESCRITURA: Crea un nuevo fichero vacío (si ya existe se borra el anterior) y permite escribir datos en el.
Method Detail

close

public void close()
Cierra el fichero, permitiendo que otros programas puedan acceder a él.


read

public E read()
Lee un dato del tipo asociado del fichero.

Genera excepciones si el fichero se ha abierto para escritura o ya ha sido cerrado.

Posibles códigos de error (obtenidos llamando a status()):

Returns:
El dato leido o null si se ha producido un error

write

public void write(E dato)
Escribe el dato en el fichero.

Genera excepciones si el fichero se ha abierto para escritura o ya ha sido cerrado. Posibles códigos de error (obtenidos llamando a status()):

Parameters:
dato -

isEndOfFile

public boolean isEndOfFile()
Comprueba si quedan o no datos por leer en el fichero.

Genera excepciones si el fichero se ha abierto para escritura o ya ha sido cerrado.

Returns:
true si se ha alcanzado el final del fichero, false si quedan datos por leer.

status

public int status()
Permite comprobar si la última operación sobre el fichero se ha realizado correctamente.

Returns:
Codigo de la ultima operacion (apertura, lectura, escritura, etc.)
  • NO_ERROR: Operación correcta.
  • ERROR_INDEFINIDO: Fallo I/O.
  • ERROR_APERTURA: Fichero inexistente o no editable.
  • ERROR_FIN_FICHERO: Se alcanzó el final de fichero.
  • ERROR_TIPOS: El fichero contiene datos de tipo distinto.

msgError

public java.lang.String msgError()
Permite obtener un String que describe el último error producido.

Returns:
Mensaje de error

iterator

public java.util.Iterator<E> iterator()
Uso interno

Specified by:
iterator in interface java.lang.Iterable<E>
Returns:

hasNext

public boolean hasNext()
Uso interno

Specified by:
hasNext in interface java.util.Iterator<E>
Returns:

next

public E next()
Uso interno

Specified by:
next in interface java.util.Iterator<E>
Returns:

remove

public void remove()
Uso interno

Specified by:
remove in interface java.util.Iterator<E>