2016-04-14 5 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, либо просмотреть, как вы написали файл.

Смежные вопросы