【问题标题】:Reading objects from file Java从文件 Java 中读取对象
【发布时间】:2016-03-18 19:53:47
【问题描述】:

我正在尝试序列化一个对象,然后从文件中反序列化。截至目前,序列化工作(或者它在运行时报告它工作)。出于某种原因,当我尝试反序列化它时,它会报告 StreamCorruptedException。 这是报告的堆栈跟踪:

java.io.StreamCorruptedException: invalid stream header: 0A0A5072
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:806)
at java.io.ObjectInputStream.(ObjectInputStream.java:299)
at Assignment8.main(Assignment8.java:201)

在网上查看并尝试找到示例后,我认为这是我需要做的

System.out.print("Please enter a file name to read:\n");
             filename = stdin.readLine().trim();

             try{                  
               FileInputStream fileIn = new FileInputStream(filename);
               ObjectInputStream in1 = new ObjectInputStream(fileIn);//line 201
               while(true){
                   try{
                       Project proj1 = (Project) in1.readObject();
                       ArrayList<Project> pla = new ArrayList<Project>();
                       pla.add(proj1);
                       for(Project proj:pla){
                           String nam = proj.getName();
                           String loc = proj.getLocation();
                           int num = proj.getNumber();
                           double bud = proj.getFund();
                           manage1.addProject(nam, loc, num, bud);
                       }
                   }catch(EOFException e){
                       System.out.println(filename+ " was read");
                       in1.close();
                       break;
                   }catch(ClassNotFoundException e){

                   }

               }
             }catch(FileNotFoundException e){
               System.out.println(filename+" was not found");
             }catch(IOException e){
               e.printStackTrace();
               System.out.println("io exception deserislaing");
             }
             break;

我使用 ArrayList 来保存从文件中读取的对象,然后再将它们添加到我的主 ProjectManagement 数组中。我正在读取的文件是一个 .dat 文件。这可能导致我的错误吗?谢谢:)

【问题讨论】:

  • 你是如何创建文件的?
  • 这是我的教授在我们的提交站点中创建的文件。

标签: java serialization


【解决方案1】:

您正在尝试使用ObjectInputStream.readObject() 从文件中获取您的序列化对象。您是否也使用ObjectOutputStrem.writeObject() 将您的对象最初写入文件?

当您用于读写的方法不相反时,通常会看到此StreamCorruptedException

【讨论】:

  • 谢谢!那是我的问题,正在使用 FileWriter 编写。
猜你喜欢
  • 1970-01-01
  • 2020-10-31
  • 1970-01-01
  • 2011-09-26
  • 1970-01-01
  • 1970-01-01
  • 2012-10-05
相关资源
最近更新 更多