2016-04-14 83 views
0

我有一個大的二進制文件,我試圖使用ObjectStream.I讀取文件收到錯誤接收錯誤java.io.StreamCorruptedException在閱讀大量的二進制文件

java.io.StreamCorruptedException: invalid stream header: 00000000 
    at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:806) 
    at java.io.ObjectInputStream.<init>(ObjectInputStream.java:299) 
    at demo.FileRead.readFile(FileRead.java:16) 

我的代碼從閱讀文件是:

public static void readFile() throws FileNotFoundException, IOException, ClassNotFoundException { 

     FileInputStream inFile = new FileInputStream(new File("/home/xyz/Documents/packets_in_store_stats")); 
     ObjectInputStream ois = new ObjectInputStream(inFile);//Receive error at this point   

     DataAvailable[] ia = (DataAvailable[]) (ois.readObject()); 
      System.out.println(ia[0] + "," + ia[1] + "," + ia[2] + "," + ia[3] 
       + "," + ia[4]); 
    } 

我在這裏錯過了什麼。

+2

該文件是否啓動hexa'CAFEBABE'?我感覺你正在嘗試讀取的文件不是一個序列化的對象,而是其他的東西(也許是另一種二進制格式)。你可以分享你從哪裏獲得該文件或如何創建文件? – Augusto

+0

@Augusto不,文件以00000000開頭。它是例外。 – EJP

回答

0

一個二進制文件不是一個序列化的對象流,除非你知道,否則這一個是不管你想不到的。您應該使用DataInputStream而不是ObjectInputStream,或者查看您如何編寫文件。