2015-03-27 6 views
-1

Просто пытаюсь прочитать номер. Я реализации Serializable и мой main() выдает ошибку:Исключение из потока "main" java.io.StreamCorruptedException: недопустимый код типа: AC

Исключение в нити «основной» java.io.StreamCorruptedException: неверный тип кода: AC на java.io.ObjectInputStream.readObject0 (ObjectInputStream.java:1379) в java.io.ObjectInputStream.readObject (ObjectInputStream.java:371) в Driver.main (Driver.java:28)

Вот код:

try (ObjectOutputStream output = new ObjectOutputStream(new 
      FileOutputStream("myFile.dat", true));){ 
      Integer a = 0; 
      output.writeObject(a); 
} 
finally{}; 
try(ObjectInputStream input = new ObjectInputStream(new 
      FileInputStream("myFile.dat"));){ 
      Integer newNumber = 0; 
      newNumber = input.readObject(); 
      ++newNumber; 
      System.out.println("This program has been executed " + newNumber 
      + " times."); 
      input.close(); 
} 
+4

И что хранится в этом файле? – RealSkeptic

ответ

1

файл пуст или содержит меньше чем четыре байта фактических данных после того, как он ader, если таковые имеются.

+0

Итак, вы не правильно записывали файл. Если вы не написали его с 'ObjectOutputStream.writeObject()/writeUnshared()', а переданный вами объект был «Integer», ваш код чтения не будет работать должным образом. Было бы более полезно использовать 'writeInt()' и 'readInt().' – EJP

+0

Так вы не делали то, что я сказал. Вы не можете смешивать 'writeInt()' и 'readObject(),' или наоборот. NB вы не можете добавлять файлы, написанные 'ObjectOutputStream.' – EJP

+0

Не говорит мне ничего. Всегда требуется сообщение трассировки стека и полное исключение. – EJP

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

  • Нет связанных вопросов^_^