2016-04-14 23 views
0

Ich habe eine große Binärdatei und ich versuche, aus der Datei zu lesen ObjectStream.I erhalten unter Verwendung des Fehlererhalten Fehler java.io.StreamCorruptedException Während große Binärdatei lesen

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) 

Mein Code aus dem Lesen Datei ist:

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]); 
    } 

Ich vermisse etwas hier.

+2

Startet die Datei das Hexa 'CAFEBABE'? Ich habe das Gefühl, dass die Datei, die Sie zu lesen versuchen, kein serialisiertes Objekt ist, sondern etwas anderes (vielleicht ein anderes Binärformat). Können Sie mitteilen, woher Sie diese Datei erhalten haben oder wie die Datei erstellt wurde? – Augusto

+0

@Augusto Nein, die Datei beginnt mit 00000000. Es ist in der Ausnahme. – EJP

Antwort

0

Eine binäre Datei ist kein serialisierter Objektstrom, es sei denn, Sie wissen es anders, und dieser ist sowieso nicht, was auch immer Sie denken. Sie sollten entweder DataInputStream, nicht ObjectInputStream verwenden oder überprüfen, wie Sie die Datei geschrieben haben.