|
1 / 1 / 2
Регистрация: 06.11.2014
Сообщений: 346
|
||||||
Десериализация не получается07.02.2016, 17:37. Показов 2102. Ответов 16
Метки нет (Все метки)
Помогите советом пожалуйста. Выкидывает exception. Десериализуеться только 1 объект вот код
obj = (Car) ois.readObject(); и ещё exception java.io.StreamCorruptedException: invalid type code: AC at java.io.ObjectInputStream.readObject0(Ob jectInputStream.java:1379) at java.io.ObjectInputStream.readObject(Obj ectInputStream.java:371) at com.company.Main.main(Main.java:47)
0
|
||||||
| 07.02.2016, 17:37 | |
|
Ответы с готовыми решениями:
16
Десериализация
|
|
345 / 141 / 51
Регистрация: 02.12.2015
Сообщений: 333
|
|
| 07.02.2016, 17:57 | |
|
Использовать при записи AppendableObjectOutputStream вместо ObjectOutputStream.
1
|
|
|
1 / 1 / 2
Регистрация: 06.11.2014
Сообщений: 346
|
|
| 07.02.2016, 18:01 [ТС] | |
|
Можете привести пример кода? Что-то IDE не разпознаёт такого класса
0
|
|
|
345 / 141 / 51
Регистрация: 02.12.2015
Сообщений: 333
|
||||||
| 07.02.2016, 18:08 | ||||||
|
оказывается это нестандартный класс.
Проблема в том что нельзя записывать несколько объектов в потом подряд без закрытия потока. Как альтернативное решение предлагается класс AppendingObjectOutputStream наследник ObjectOutputStream. Вот он:
1
|
||||||
|
1 / 1 / 2
Регистрация: 06.11.2014
Сообщений: 346
|
|||||||||||
| 07.02.2016, 18:35 [ТС] | |||||||||||
|
Этот код я написал у меня не распознаёт в main
Error 47, 44) java: cannot find symbolsymbol: method readObject() location: variable ois of type com.company.AppendableObjectOutputStream Error 45, 93) java: incompatible types: java.io.FileInputStream cannot be converted to java.io.OutputStreamДобавлено через 14 минут оказывается это нестандартный класс. Проблема в том что нельзя записывать несколько объектов в потом подряд без закрытия потока. Как альтернативное решение предлагается класс AppendingObjectOutputStream наследник ObjectOutputStream. Вот он: Java(TM) 2 Platform Standard Edition 5.0 Выделить код
Добавлено через 4 минуты Вообще идей у меня нет , чего оно только один объект десериализует?
0
|
|||||||||||
|
345 / 141 / 51
Регистрация: 02.12.2015
Сообщений: 333
|
||
| 07.02.2016, 18:38 | ||
|
Файл неправильно записан - поэтому и не читается.
Надо исправлять запись, а не чтение. Надо записывать при помощи AppendingObjectOutputStream, а не читать.
0
|
||
|
1 / 1 / 2
Регистрация: 06.11.2014
Сообщений: 346
|
|
| 07.02.2016, 19:20 [ТС] | |
|
Ошибка точно в записи , а не в чтении?
Просто в файле оно всё пишет! Мне кажется ошибка в чтении. Добавлено через 26 минут ну счас попробую с записью переделать(
0
|
|
|
345 / 141 / 51
Регистрация: 02.12.2015
Сообщений: 333
|
|
| 07.02.2016, 19:22 | |
|
Первый объект в файл надо писать через ObjectOutputStream.
Все последующие через AppendingObjectOutputStream. Это точно работает. Я проверил. Но мне кажется это некрасивым решением. Надо разобраться почему вообще эта хрень возникает.
1
|
|
|
1 / 1 / 2
Регистрация: 06.11.2014
Сообщений: 346
|
|
| 07.02.2016, 19:33 [ТС] | |
|
Можете свой код скинуть? У меня ошибка возникает в классе AppendingObjectOutputStream с out
0
|
|
|
345 / 141 / 51
Регистрация: 02.12.2015
Сообщений: 333
|
|||||||||||
| 07.02.2016, 19:47 | |||||||||||
сюда пришлось дописать "throws IOException":
1
|
|||||||||||
|
1 / 1 / 2
Регистрация: 06.11.2014
Сообщений: 346
|
|
| 07.02.2016, 19:57 [ТС] | |
|
не, всё тоже самое у меня. Понимаете вы всё делаете с новыми потоками, попробуйте добавить тоже самое с помощью цикла всё в одном try-catch не закрывая потоков.
0
|
|
|
345 / 141 / 51
Регистрация: 02.12.2015
Сообщений: 333
|
|
| 07.02.2016, 20:27 | |
|
Старый файл надо удалить.
Если не закрывая потоков за раз все объекты записывать, то AppendingObjectOutputStream вообще не нужен. Суть проблемы: ObjectOutputStream пишет сначала некий заголовок (несколько байт) первый раз после открытия, потом объекты. Если записать объект, закрыть поток, открыть и записать снова объект, то запишется второй заголовок после первого объекта - и файл будет испорчен, т.к. заголовок должен быть только один в начале файла. Для того чтобы заголовок не записывался был создан AppendingObjectOutputStream, где запись заголовка отключена. Но если первый объект в файле записать с помощью AppendingObjectOutputStream то заголовка вообще не будет. Что тоже ошибка, но уже другая.
1
|
|
|
1 / 1 / 2
Регистрация: 06.11.2014
Сообщений: 346
|
|
| 07.02.2016, 20:43 [ТС] | |
|
Ага спасибо большое, вот терь я понял смысл проблемы . Я тоже смотрел на этот файл и думал почему у меня такая большая первая запись и тоже пришёл к выводу что оно вроде как обозначает название, а про AppendingObjectOutputStream не знал . Счас попробую.
Добавлено через 5 минут А что в заголовке храниться , может тип объекта потеряется?
0
|
|
|
345 / 141 / 51
Регистрация: 02.12.2015
Сообщений: 333
|
||||||
| 07.02.2016, 20:57 | ||||||
|
Нет, заголовок к объекту не относится, он ко всему файлу относится.
Там просто две константы по два байта. Вот метод класса ObjectOutputStream который пишет заголовок.
1
|
||||||
|
1 / 1 / 2
Регистрация: 06.11.2014
Сообщений: 346
|
|
| 07.02.2016, 21:34 [ТС] | |
|
не читает он(, блин может есть возможность сразу весь массив считать?
Я уже проверку на длину сделал типо если первый елемент то мы пишем с помощью ObjectOutputStream а если нет то с помощью AppendingObjectOutputStream Добавлено через 9 минут java.io.StreamCorruptedException: invalid stream header: 73720018 at java.io.ObjectInputStream.readStreamHead er(ObjectInputStream.java:806) at java.io.ObjectInputStream.<init>(ObjectI nputStream.java:299) at com.company.Main.main(Main.java:46) Добавлено через 45 секунд Я вот думаю а что если ArrayList передать сразу? А как тогда считать ?) Добавлено через 1 минуту клоном! Добавлено через 2 минуты не , клон - отпадает!
0
|
|
|
345 / 141 / 51
Регистрация: 02.12.2015
Сообщений: 333
|
||
| 07.02.2016, 21:41 | ||
|
Если записывать весь массив целиком, то и считать можно целиком.
надо убедится что для записи первого объекта в новый файл вызывается оригинальный ObjectOutputStream. Код покажите какой сейчас для записи.
0
|
||
|
1 / 1 / 2
Регистрация: 06.11.2014
Сообщений: 346
|
|
| 07.02.2016, 21:58 [ТС] | |
|
Я его стёр полностью. Но по отладчику даже не пишет 1-ый элемент сразу ексепшн(, сейчас пробую через ArrayList всё сразу передать
0
|
|
| 07.02.2016, 21:58 | |
|
Помогаю со студенческими работами здесь
17
Десериализация .ser Десериализация XML
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во
всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
|