• Jueves 2 de Mayo de 2024, 23:47

Autor Tema:  Archivos En Java  (Leído 4243 veces)

markdark

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
Archivos En Java
« en: Martes 10 de Junio de 2008, 21:54 »
0
Hola necesito que me ayuden con este problema ....     necesito guardar en un archivo un arreglo de objetos de la clase alumno en la clase alumno me piden nombre   edad y direccion  como hago para guardar un arreglo de objetos de esa clase y copmo hago para poder accesar a los datos de cada objeto?????'  hracias espero me apoyen con este problemilla

antony_soluciones

  • Miembro MUY activo
  • ***
  • Mensajes: 222
    • Ver Perfil
Re: Archivos En Java
« Respuesta #1 en: Martes 10 de Junio de 2008, 22:51 »
0
Hola

Primero la clase alumno debe estar serializada(osea que implementa la interfaz Serializable), segundo la clase que contiene el arreglo de objetos del tipo alumno también debe estar serializada y tercero se almacena en el discoduro con ObjectOutputStream pasandole como parametro al constructor un FileOutputStream, para leerlo se hace con ObjectInputStream y se le pasa un FileInputStream que contiene la ruta de donde quédó almacenado el objeto

Saludos.
[size=109]Antony Hernan Delgado Solano. @antonyDelSol en twitter[/size]

markdark

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
Re: Archivos En Java
« Respuesta #2 en: Martes 10 de Junio de 2008, 22:56 »
0
mmmm la verdad es que no te entendi nada ... seriaS TAN AMABLE DE MANDARME UN EJEMPLITO??? GRXS

antony_soluciones

  • Miembro MUY activo
  • ***
  • Mensajes: 222
    • Ver Perfil
Re: Archivos En Java
« Respuesta #3 en: Martes 10 de Junio de 2008, 23:31 »
0
Aquí hay un ejemplito.

Código: Text
  1. public class NewClass {
  2.     static class Serial implements Serializable{
  3.         public Integer valor = 5;
  4.         public Serial(){
  5.            
  6.         }
  7.     }
  8.    public static void main(String... a){
  9.         try {
  10.             FileOutputStream fich = new FileOutputStream("C:/miObj.obj");
  11.             ObjectOutputStream obj = new ObjectOutputStream(fich);
  12.             Serial s = new Serial();
  13.             s.valor = 10;
  14.             obj.writeObject(s);
  15.             obj.close();
  16.             FileInputStream fichIn = new FileInputStream("C:/miObj.obj");
  17.             ObjectInputStream objIn = new ObjectInputStream(fichIn);
  18.             Serial sIn = (Serial)objIn.readObject();
  19.             System.out.println(sIn.valor);
  20.             objIn.close();
  21. //            BufferedOutputStream out = new BufferedOutputStream(System.out);
  22. //            DataOutputStream data = new DataOutputStream(System.out);
  23. //            data.writeBytes("hola mundo");
  24.            
  25. //            data.close();
  26.         } catch (ClassNotFoundException ex) {
  27.             Logger.getLogger(NewClass.class.getName()).log(Level.SEVERE, null, ex);
  28.         } catch (IOException ex) {
  29.             Logger.getLogger(NewClass.class.getName()).log(Level.SEVERE, null, ex);
  30.         }
  31.    }
  32. }
  33.  
[size=109]Antony Hernan Delgado Solano. @antonyDelSol en twitter[/size]

markdark

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
Re: Archivos En Java
« Respuesta #4 en: Sábado 14 de Junio de 2008, 21:12 »
0
disculpa por molestar pero este programa no ejecuta tuve que quitarle estas dos lineas

Logger.getLogger(NewClass.class.getName()).log(Level.SEVERE, null, ex);
   
Logger.getLogger(NewClass.class.getName()).log(Level.SEVERE, null, ex);

el compilador(jCreator)   no reconoce las palabras Logger ni level bueno les quite esas lineas y compilo pero al momento de ejecutarno muestra nada y se supone que deberia mostrar algun valor

bueno io he estado intentando guiarme de tu ejemplo... y elabora el mio pero no entiendo de donde sale la interfax serializable??? que significa eso no entiendo...

ia mira aca te mando el codigo que he estado haciendo:


Código: Text
  1.  
  2.  
  3. import java.io.*;
  4.  
  5.  
  6. public class prueba{
  7.   
  8.     
  9.     
  10.     public static void main(String args[]){
  11.       
  12.       try {
  13.            FileOutputStream fich = new FileOutputStream("C:/prueb1.txt");
  14.            ObjectOutputStream obj = new ObjectOutputStream(fich);
  15.           
  16.            pokemon p=new pokemon();
  17.            p.ingresaDatos();
  18.            obj.writeObject(p);
  19.            obj.close();
  20.           
  21.           
  22.            FileInputStream fichIn = new FileInputStream("C:/prueb1.txt");
  23.            ObjectInputStream objIn = new ObjectInputStream(fichIn);
  24.            pokemon s = (pokemon)objIn.readObject();
  25.            s.muestraDatos();
  26.            objIn.close();
  27.       } catch (ClassNotFoundException ex) {
  28.         
  29.        }catch (IOException ex) {
  30.         
  31.        }
  32.       
  33.     }
  34.     
  35. }
  36.  


aqui otra clase de la que deseo guardar los objetos


Código: Text
  1.  
  2. public class pokemon implements Serializable{
  3.  
  4.    public String nomb;
  5.     public pokemon() {
  6.     }
  7.     
  8.     public void ingresaDatos(){
  9.       
  10.       System.out.println("nombre: ");
  11.       nomb=Leer.leerDato();
  12.     }
  13.     
  14.     public void muestraDatos(){
  15.       
  16.       System.out.println("nombre: "+ nomb);
  17.     }
  18. }
  19.  


La clase Leer tiene los metodos que sirven para leer datos


Código: Text
  1.  
  2.  
  3. import java.io.*;
  4. public class Leer {
  5.   
  6.   
  7.   public static String leerDato(){
  8.     
  9.     String dato;
  10.     try {
  11.       BufferedReader teclado=new BufferedReader(new InputStreamReader(System.in));
  12.        dato=teclado.readLine().trim();
  13.     }catch(Exception e){
  14.        dato=" ";
  15.     }
  16.   
  17.       return dato;  
  18.   }  
  19.   
  20.     public static int aEntero(String cadena){
  21.  
  22.      int dato;
  23.      try{
  24.        dato=Integer.parseInt(cadena);
  25.        
  26.         }catch(Exception e){
  27.           dato=-1;
  28.         }
  29.         return dato;   
  30.   
  31.    }
  32.  
  33.     public static long aEnteroLargo(String cadena){
  34.  
  35.      long dato;
  36.      try{
  37.        dato=Long.parseLong(cadena);
  38.        
  39.         }catch(Exception e){
  40.           dato=-1;
  41.         }
  42.         return dato;   
  43.   
  44.    }
  45.   public static double aReal(String cadena){
  46.  
  47.      double dato;
  48.      try{
  49.        dato=Double.parseDouble(cadena);
  50.        
  51.         }catch(Exception e){
  52.           dato=-1;
  53.         }
  54.         return dato;   
  55.   
  56.    }  
  57.     
  58.   public static void mostrar(String cadena){
  59.     System.out.println(cadena);
  60.   }
  61.   
  62.   public static void mostrarSeguido(String cadena){
  63.     System.out.print(cadena);
  64.   }
  65.   
  66.             
  67. }    
  68.  


Cuando ejecuto la clase Prueba solamente me pide el dato pero despues no muestra nada... nos e porque espero me respondas gracias por todo....

antony_soluciones

  • Miembro MUY activo
  • ***
  • Mensajes: 222
    • Ver Perfil
Re: Archivos En Java
« Respuesta #5 en: Martes 17 de Junio de 2008, 19:48 »
0
Hola
Código: Text
  1.  
  2. Logger.getLogger(NewClass.class.getName()).log(Level.SEVERE, null, ex);
  3.  

Esta parte es para el log4j un api para el control de errores, no hay ningún problema si se quita.

La interfaz Serializable es una interfaz sin métodos, proviene del paquete java.io y es utilizada para serializar, almacenar, escribir en algun medio, objetos java.

La clase pokemon quedaría así
Código: Text
  1.  
  2. package solocogido;
  3. import java.io.Serializable;
  4. public class pokemon implements Serializable {
  5.     public String nomb;
  6.    
  7.     public pokemon() {
  8.     }
  9.     public void ingresaDatos() {
  10.         System.out.println("nombre: ");
  11.         nomb = Leer.leerDato();
  12.     }
  13.     public void muestraDatos() {
  14.         System.out.println("nombre: " + nomb);
  15.     }
  16. }
  17.  

la clase prueba así
Código: Text
  1.  
  2. package solocogido;
  3. import java.io.FileInputStream;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.io.ObjectInputStream;
  7. import java.io.ObjectOutputStream;
  8. public class prueba {
  9.     public static void main(String args[]) {
  10.         try {
  11.             FileOutputStream fich = new FileOutputStream("C:/prueb1.txt");
  12.             ObjectOutputStream obj = new ObjectOutputStream(fich);
  13.             pokemon p = new pokemon();
  14.             p.ingresaDatos();
  15.             obj.writeObject(p);
  16.             obj.close();
  17.             FileInputStream fichIn = new FileInputStream("C:/prueb1.txt");
  18.             ObjectInputStream objIn = new ObjectInputStream(fichIn);
  19.             pokemon s = (pokemon) objIn.readObject();
  20.             s.muestraDatos();
  21.             objIn.close();
  22.         } catch (ClassNotFoundException ex) {
  23.         } catch (IOException ex) {
  24.         }
  25.     }
  26. }
  27.  

y por ultimo la clase leer
Código: Text
  1. package solocogido;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.InputStreamReader;
  5.  
  6. public class Leer {
  7.  
  8.     public static String leerDato() {
  9.         String dato;
  10.         try {
  11.             BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in));
  12.             dato = teclado.readLine().trim();
  13.         } catch (Exception e) {
  14.             dato = " ";
  15.         }
  16.         return dato;
  17.     }
  18.     public static int aEntero(String cadena) {
  19.         int dato;
  20.         try {
  21.             dato = Integer.parseInt(cadena);
  22.         } catch (NumberFormatException e) {
  23.             dato = -1;
  24.         }
  25.         return dato;
  26.     }
  27.     public static long aEnteroLargo(String cadena) {
  28.         long dato;
  29.         try {
  30.             dato = Long.parseLong(cadena);
  31.         } catch (Exception e) {
  32.             dato = -1;
  33.         }
  34.         return dato;
  35.     }
  36.     public static double aReal(String cadena) {
  37.         double dato;
  38.         try {
  39.             dato = Double.parseDouble(cadena);
  40.         } catch (Exception e) {
  41.             dato = -1;
  42.         }
  43.         return dato;
  44.     }
  45.     public static void mostrar(String cadena) {
  46.         System.out.println(cadena);
  47.     }
  48.     public static void mostrarSeguido(String cadena) {
  49.         System.out.print(cadena);
  50.     }
  51. }    
  52.  

Espero te sea de ayuda, hacía mucho tiempo que no entraba por aqui espero haber sido lo suficiente claro

Atte,

Antony
[size=109]Antony Hernan Delgado Solano. @antonyDelSol en twitter[/size]

markdark

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
Re: Archivos En Java
« Respuesta #6 en: Jueves 19 de Junio de 2008, 06:44 »
0
gracias  tu ayuda me sirvio de mucho eres lo maximo... ahora una pregunta mas ... que pasa si quiero guardar un arreglo de objetos para la misma clase... es lo mismo o tengo que poner otro codigo????

antony_soluciones

  • Miembro MUY activo
  • ***
  • Mensajes: 222
    • Ver Perfil
Re: Archivos En Java
« Respuesta #7 en: Viernes 20 de Junio de 2008, 00:37 »
0
sip, es lo mismo, solo recuerda que cada clase del arreglo de objetos debe estar serializada.

Chao
[size=109]Antony Hernan Delgado Solano. @antonyDelSol en twitter[/size]

markdark

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
Re: Archivos En Java
« Respuesta #8 en: Sábado 21 de Junio de 2008, 03:23 »
0
otra vex gracias esto me sirvio de muxo ...   tema terminado!!!!!!!