Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/02/2014, 12:28
Avatar de gringofer
gringofer
 
Fecha de Ingreso: agosto-2010
Ubicación: Córdoba, Argentina
Mensajes: 338
Antigüedad: 13 años, 9 meses
Puntos: 22
Guardar objeto en archivo y luego mostrar archivo

Hola, buen dia gente del foro

Estoy haciendo un trabajo para la universidad y tengo un problema, me piden que cargue por teclado n cantidad de objetos (ejemplares) en un archivo y luego muestre el archivo.

El problema es cuando intento mostrar el archivo no sale nada, solo figura el mensaje "Fin del archivo" pero no muestra el objeto.

Les dejo las clases para que puedan ver el codigo:

Clase Principal:

Código Java:
Ver original
  1. public class ExamenFinal {
  2.  
  3.     /**
  4.      * @param args the command line arguments
  5.      */
  6.     public static void main(String[] args) {
  7.         // TODO code application logic here
  8.         Archivo a;
  9.         Ejemplar ejemplar;
  10.         String nombre="dato1.dat",descripcion;
  11.         int codigo,tipo,origen,stock,op;
  12.         //System.out.println("Ingrese el nombre del archivo: ");
  13.         //nombre=In.readLine();
  14.        
  15.         a = new Archivo(nombre);
  16.        
  17.         System.out.println("Ingrese el codigo del ejemplar: ");
  18.         codigo=In.readInt();
  19.         while(codigo!=-1){
  20.             System.out.println("Ingrese la descripcion del ejemplar: ");
  21.             descripcion=In.readString();
  22.             System.out.println("Ingrese el tipo de ejemplar: ");
  23.             tipo=In.readInt();
  24.             System.out.println("Ingrese el origen del ejemplar: ");
  25.             origen=In.readInt();
  26.             System.out.println("Ingrese el stock del ejemplar: ");
  27.             stock=In.readInt();
  28.             ejemplar = new Ejemplar(codigo,descripcion,tipo,origen,stock);
  29.             a.addArchivo(ejemplar);
  30.             System.out.println("Ingrese el codigo del siguiente ejemplar, si desea ir al menu ingrese -1: ");
  31.             codigo=In.readInt();
  32.         }
  33.        
  34.         System.out.println("\f");
  35.         do{
  36.             System.out.println("\t\t//////MENU//////");
  37.             System.out.println("\n\t1)Mostrar los datos del archivo\n\t5)Salir\n\tIngrese una opcion: ");
  38.             op=In.readInt();
  39.             switch(op){
  40.                 case 1: System.out.println(a.mostrarArchivo());
  41.                     break;
  42.                    
  43.                 default: System.out.println("La opcion ingresada no es correcta");    
  44.             }
  45.         }while(op!=5);
  46.  
  47.     }
  48.    
  49. }

Clase Ejemplar:

Código Java:
Ver original
  1. public class Ejemplar {
  2.     private int codigo;
  3.     private String descripcion;
  4.     private int tipo;
  5.     private int origen;
  6.     private int stock;
  7.     private String origenDes[]={"Nacional","Internacional"};
  8.  
  9.     public Ejemplar(int codigo, String descripcion, int tipo, int origen, int stock) {
  10.         this.codigo = codigo;
  11.         this.descripcion = descripcion;
  12.         this.tipo = tipo;
  13.         this.origen = origen;
  14.         this.stock = stock;
  15.     }
  16.  
  17.     public int getCodigo() {
  18.         return codigo;
  19.     }
  20.  
  21.     public void setCodigo(int codigo) {
  22.         this.codigo = codigo;
  23.     }
  24.  
  25.     public String getDescripcion() {
  26.         return descripcion;
  27.     }
  28.  
  29.     public void setDescripcion(String descripcion) {
  30.         this.descripcion = descripcion;
  31.     }
  32.  
  33.     public int getTipo() {
  34.         return tipo;
  35.     }
  36.  
  37.     public void setTipo(int tipo) {
  38.         this.tipo = tipo;
  39.     }
  40.  
  41.     public int getOrigen() {
  42.         return origen;
  43.     }
  44.  
  45.     public void setOrigen(int origen) {
  46.         this.origen = origen;
  47.     }
  48.  
  49.     public int getStock() {
  50.         return stock;
  51.     }
  52.  
  53.     public void setStock(int stock) {
  54.         this.stock = stock;
  55.     }
  56.  
  57.     @Override
  58.     public String toString() {
  59.         return "Ejemplar: " + "codigo: " + codigo + "\n descripcion: " + descripcion + "\n tipo: " + tipo + "\n origen: " + origenDes[origen] + "\n stock: " + stock;
  60.     }
  61.    
  62.    
  63. }

Clase Archivo:

Código Java:
Ver original
  1. import java.io.*;
  2. import java.util.*;
  3.  
  4. /**
  5.  *
  6.  * @author Fer
  7.  */
  8. public class Archivo {
  9.     String archivo;
  10.     private FileInputStream fis=null;
  11.     private ObjectOutputStream oos=null;
  12.     private FileOutputStream fos=null;
  13.     private ObjectInputStream ois=null;
  14.    
  15.     public Archivo(String nombre){
  16.         archivo=nombre;
  17.     }
  18.    
  19.     public String cerrarEscritura(){
  20.         String r="";
  21.         try{
  22.             if(oos!=null)
  23.                 oos.close();
  24.             if(fos!=null)
  25.                 fos.close();
  26.         }catch(IOException e){
  27.             r+="Error al escribir el archivo "+e.getMessage();
  28.         }
  29.         return r;
  30.     }
  31.    
  32.     public String cerrarLectura(){
  33.         String r="";
  34.         try{
  35.             if(fis!=null)
  36.                 fis.close();
  37.             if(ois!=null)
  38.                 ois.close();
  39.         }catch(IOException e){
  40.             r+="Error al leer el archivo "+e.getMessage();
  41.         }
  42.         return r;
  43.     }
  44.    
  45.     public String addArchivo(Ejemplar o){
  46.         String r="";
  47.         try{
  48.             fos = new FileOutputStream(archivo);
  49.             oos = new ObjectOutputStream(fos);
  50.             if(o!=null)
  51.             oos.writeObject(o);
  52.         }catch(IOException e){
  53.             r+="Error al guardar el objeto "+e.getMessage();
  54.         }finally{
  55.             r+=cerrarEscritura();
  56.         }
  57.         return r;
  58.     }
  59.    
  60.     public String mostrarArchivo(){
  61.         String r="";
  62.         Ejemplar aux=null;
  63.         try{
  64.             fis = new FileInputStream(archivo);
  65.             ois = new ObjectInputStream(fis);
  66.             while(true){
  67.                aux=(Ejemplar) ois.readObject();
  68.                 r+="\n"+aux.toString();
  69.             }
  70.         }catch(IOException e){
  71.             r+="Fin del archivo";
  72.         }
  73.         catch(Exception e1){
  74.             r+="Error al mostrar el archivo "+e1.getMessage();
  75.         }finally{
  76.             r+=cerrarLectura();
  77.         }
  78.         return r;
  79.     }
  80.    
  81. }

Alguien me podria ayudar? desde ya muchas gracias!

Saludos!
__________________
Si quieres cambio verdadero, pues camina distinto...