Foro de elhacker.net

Programación => Java => Mensaje iniciado por: bash en 11 Febrero 2016, 16:42 pm



Título: Error Leyendo un archivo con varios objetos
Publicado por: bash en 11 Febrero 2016, 16:42 pm
Saludo para todos!!


les cuento he estado tratando de escribir una clase  pueda leer de una arhivo varios objetos y cuando encuentre el null salga de la func pero lo unico que me da es un par de exceptiones dejare el codigo abajo pienso que es la forma correcta asi pero si alguien me aconseja.

Código
  1. package Data;
  2.  
  3. import Data.InventarioData;
  4.  
  5. import java.io.FileInputStream;
  6. import java.io.IOException;
  7. import java.io.ObjectInputStream;
  8.  
  9. public class ReadData {
  10. ObjectInputStream inputFile;
  11.  
  12.  
  13. public ReadData(){}
  14.  
  15.  
  16. public Object ReadDataFile( String filename)
  17. {
  18. Object ret = null;
  19. try {
  20. inputFile = new ObjectInputStream(new FileInputStream(filename));
  21. ret = inputFile.readObject();
  22.    inputFile.close();
  23.  
  24. } catch (IOException e) {
  25.  
  26. e.printStackTrace();
  27. } catch (ClassNotFoundException e) {
  28. e.printStackTrace();
  29. }
  30.  
  31. return ret;
  32. }
  33.  
  34. public void ReadAllData(String filename)
  35. {
  36. InventarioData inv = null;
  37.  
  38. boolean reading = true;
  39. {
  40. try {
  41. inputFile = new ObjectInputStream(new FileInputStream(filename));
  42. } catch (IOException e) {
  43. // TODO Auto-generated catch block
  44. e.printStackTrace();
  45. }
  46. while( reading == true )
  47. {
  48.  
  49. try {
  50. if((inv = (InventarioData ) inputFile.readObject())!= null)
  51.  {
  52.      inv.PrintConsole();
  53.  }
  54. } catch (ClassNotFoundException e) {
  55. reading = false;
  56. e.printStackTrace();
  57. } catch (IOException e) {
  58. reading = false;
  59. e.printStackTrace();
  60. }
  61.  
  62. }
  63.  
  64. }
  65.  
  66.  
  67. }
  68.  
  69. }
  70.  


la exception es la siguiente :
Código
  1. at java.io.ObjectInputStream.readObject0(Unknown Source)
  2. at java.io.ObjectInputStream.readObject(Unknown Source)
  3. at Data.ReadData.ReadAllData(ReadData.java:50)
  4. at Main.Main.main(Main.java:23)

tambien me gustaria agregar que la clase inventario Implementa serializable de hecho si leo individualmente un objeto me devuleve bien , pero ahora me estoy preguntado si esta bien el metodo que uso para escrbir el objeto y que append al archivo

Código
  1. ObjectOutputStream fileOutput;
  2.  
  3. ...
  4.            //// no se si hay otra forma de hacerlo.
  5.            fileOutput = new ObjectOutputStream(new FileOutputStream(filename));
  6.    fileOutput.writeObject(object);
  7.  
  8.  

tambien me gustaria agregar que no estoy usando  la documentacion de oracle simplemente estoy usando algo que tome de una clase y por eso quizas me hace falta algo , soy nuevo en java vengo de c++ , cualquier consejo o critica es bien tomado y agradecido...!!! :D



gracias de antemano.