|
1 / 1 / 2
Регистрация: 06.11.2014
Сообщений: 346
|
||||||
Десериализация не получается07.02.2016, 17:37. Показов 2100. Ответов 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
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель микоризы: классовый агентный подход 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 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|