簡體   English   中英

從文件Java讀取對象

[英]Reading objects from file Java

我正在嘗試序列化對象,然后從文件中反序列化。 截至目前,序列化工作正常(或在運行時報告工作正常)。 由於某種原因,當我嘗試反序列化時,它報告一個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文件。 這可能引起我的錯誤嗎? 謝謝 :)

您正在嘗試使用ObjectInputStream.readObject()從文件中獲取序列化的對象。 您是否還使用ObjectOutputStrem.writeObject()將對象最初寫入文件?

當您用於讀取和寫入的方法彼此StreamCorruptedException時,通常會看到此StreamCorruptedException

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM