// Declaramos el array de dos posiciones
Socio[] socios = new Socio[2];
// Creamos un socio de un tipo
SocioTitularFamiliar socTF = new SocioTitularFamiliar("Antonio", 25, 2, "Taxista", "50222333Q",
"2222-3333-30-1111111111", 3, 1998, 4) ;
// Lo metemos al array
socios[0] = socTF ;
// Creamos ahora un socio de otro tipo, de otra subclase
SocioTitularIndividual socTI = new SocioTitularIndividual("Filomeno a mi pesar", 33, 1.3f, "Bombero", "22333444F",
"2222-3333-30-1111111111", 2, 2001) ;
// Lo metemos al array también
socios[1] = socTI ;
// Recorro el array para comprobar que todo va bien
int contador ;
Socio socio ;
for (contador= 0; contador < socios.length; contador++) {
socio = socios[contador] ;
if (socio instanceof SocioTitularFamiliar)
ES.msgln("El de la posición " + contador + " es familiar");
else
ES.msgln("El de la posición " + contador + " no es familiar");
}
// Ahora pruebo a escribir el array en un fichero de disco
try{
// Abrir fichero para escribir en el, en la ruta que me interesa
FileOutputStream fichero = new FileOutputStream(new File (GestionSocios.rutayFichero));
ObjectOutputStream ficheroSalida;
ficheroSalida = new ObjectOutputStream(fichero);
// Escribo el array en el fichero
ficheroSalida.writeObject(socios);
// También escribo dos datos que me interesan
ficheroSalida.writeInt(SocioTitularFamiliar.getNumeroSocios());
ficheroSalida.writeInt(SocioTitularIndividual.getNumeroSocios());
// Cerramos el fichero
ficheroSalida.close();
ES.msgln("El archivo " + GestionSocios.rutayFichero + " guardado con éxito...");
}catch (FileNotFoundException fnfe){
ES.msgln("Error: El fichero no existe. ");
}catch (IOException ioe){
ES.msgln("Error: falló la escritura en el fichero " + GestionSocios.rutayFichero);
}
// Pruebo ahora a poner a null el array e intento recuperar de fichero
socios = null ;
try{
// Abrimos el fichero para lectura
FileInputStream fichero = new FileInputStream(new File (GestionSocios.rutayFichero));
ObjectInputStream ficheroEntrada = new ObjectInputStream(fichero) ;
// Recuperar el objeto array del fichero
socios = (Socio[]) ficheroEntrada.readObject();
for (contador= 0; contador < socios.length; contador++) {
socio = socios[contador] ;
if (socio instanceof SocioTitularFamiliar)
ES.msgln("El de la posición " + contador + " es familiar");
else
ES.msgln("El de la posición " + contador + " no es familiar");
}
// Leemos también y en el mismo orden que los guardamos, el resto de datos
SocioTitularFamiliar.setNumeroSocios(ficheroEntrada.readInt());
SocioTitularIndividual.setNumeroSocios(ficheroEntrada.readInt());
// Cerrar el fichero
ficheroEntrada.close();
ES.msgln("El Archivo " + GestionSocios.rutayFichero + " se ha cargado con éxito....");
}catch (ClassNotFoundException cnfe){
ES.msgln("No se pudo acceder a la clase adecuada para revertir la Serialización al leer del fichero.");
}catch (FileNotFoundException fnfe){
ES.msgln("El fichero " + GestionSocios.rutayFichero + " no existe.");
}catch (IOException ioe){
ES.msgln("Error de Entrada/Salida: Falló la lectura del fichero. La aplicación sigue funcionando sin haber cargado los datos del archivo, para permitir crearlo de nuevo.");
}