Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 0
Регистрация: 16.11.2016
Сообщений: 43

EOFException при чтении HashMap из файла

24.01.2017, 18:49. Показов 1223. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Я пытаюсь написать свое первое веб - приложение (морской бой). Такая проблема: я еще не знаком с базами данных, поэтому в папке с проектом у меня лежит файл accounts, который представляет собой сериализованную HashMap<String, Player>. вот на этом участке (это часть конструктора сервера) вылетает EOFException:
Java
1
2
3
4
try (ObjectInputStream in = new ObjectInputStream(new FileInputStream(new File(PLAYERS_FILE_NAME)))) {
            players = (HashMap<String, Player>) in.readObject();
            new Saver().start();
}
в третьей строчке это я запускаю поток, который раз в 60 секунд перезаписывает текущее состояние хэш-мапы, у него есть собственный ObjectOutput. Проблема точно не в нем, т.к. вначале он спит и файл не трогает.
не понятно, почему вылетает эта ошибка. причем если я добавлю такой участок (выполняется перед запуском метода main):
Java
1
2
3
4
5
static {
        try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(new File(PLAYERS_FILE_NAME)))) {
                out.writeObject(new HashMap<String, Player>());
            
}
ошибка перестает вылетать. но мне не нужно каждый раз создавать новый файл. да, если это важно - я использую RMI.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.01.2017, 18:49
Ответы с готовыми решениями:

"Нарушение прав доступа при чтении по адресу" при чтении структур из бинарного файла
Пытаюсь разобраться со структурами в бинарных файлах. Допустим, есть массив структур. Записываю его в бинарный файл (закомментированный...

Как при чтении файла проверить достигнут ли конец файла?
Как при чтении файла проверить достигнут ли конец файла? Dim Red As IO.BinaryReader Red = New...

Можно ли при чтении из файла элементов в список удалять эти элементы(без очистки файла)
Допустим,есть файл,в нём записаны 3 обьекта(отличаются одним параметром,по которому как раз и достаются обьекты из файла).Пусть второй...

4
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
24.01.2017, 23:31
Цитата Сообщение от Solid Snake Посмотреть сообщение
вот на этом участке (это часть конструктора сервера) вылетает EOFException:
А где именно вылетает? Из readObject? Покажите stack trace.

Обычно, если такое исключение вылетает, то в файле записано не то что вы ожидаете (Не HashMap<String, Player>). или записано криво.
0
1 / 1 / 0
Регистрация: 16.11.2016
Сообщений: 43
24.01.2017, 23:40  [ТС]
да, вылетает из readObject().
Java
1
2
3
4
5
6
java.io.EOFException
    at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2626)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1321)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373)
    at SeaBattleServer.RemoteServerImpl.<init>(RemoteServerImpl.java:21)
    at SeaBattleServer.StartServer.main(StartServer.java:33)
это после того, как я полностью закомментировал вот этот участок:
Java
1
2
3
4
5
6
7
    static {
        try (ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(new File(PLAYERS_FILE_NAME))))) {
                out.writeObject(new HashMap<String, Player>());
            
        } catch (FileNotFoundException ex) {ex.printStackTrace();}
          catch (IOException ex) {ex.printStackTrace();} 
    }
с ним все работает. вообще очень странно, так как я до этого что-то похожее делал точно таким же макаром и все работало.
тут еще один попутный вопрос возник: допустим мне надо разбудить поток исполнения на удаленном компьютере, возможно ли это сделать с помощью технологии RMI?
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
25.01.2017, 11:53
Цитата Сообщение от Solid Snake Посмотреть сообщение
это после того, как я полностью закомментировал вот этот участок:
Так это вы записываете пустой HashMap.
А где в вашем коде настоящяя map-а записывается в файл? Она записывается вообще или нет?
1
1 / 1 / 0
Регистрация: 16.11.2016
Сообщений: 43
25.01.2017, 17:31  [ТС]
так пустой - непустой, а все-таки HashMap, тот закоментированный участок нужен был лишь для того, чтобы создать этот самый файл, а потом в конструкторе сервера его подгружать. настоящая мапа записывается каждые 60 секунд в том самом отдельном потоке "Saver".
еще могу сказать, что файл как - то странно выглядит, там всего два символа.

Добавлено через 2 часа 2 минуты
так, извиняюсь, кажется вы правы, пустой хэш мап ему не нужен, я сделал так - создал хэш-мап и сразу записал туда одного игрока, после чего ошибка больше не вылазит. спасибо в общем.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.01.2017, 17:31
Помогаю со студенческими работами здесь

Ошибка EOFException при передаче файлов через socket
есть серверpublic class ServerPart { JTextArea area; ServerPart(){ JFrame f = new JFrame(&quot;Server&quot;); ...

Ошибка при вызове метода класса, при чтении из файла
добрый день, пытаюсь считать данные из и запихнуть их в список в файле у меня вот такие данные a01 b10 А и Б надо запихнуть в...

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

Зацикливание при чтении из файла
Пытаюсь читать из файла данные,сохраненные из Экселя TempBook-&gt;SaveAs(PathFile+&quot;\\&quot;+&quot;Temp&quot;,Excel::xlCSV , &amp;vtMissing,...

Ошибка при чтении файла
uses crt; var d: char; {a,Val,a1,}s, u: string; a3:array of string; f: Text; I: integer; begin Writeln(' нажите клавишу,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Вот уже год прошел, как у меня домен в reg.ru ...
Etyuhibosecyu 16.04.2026
И ничего они мне не сделали. Если отвязать карту, никакие услуги они не навяжут. Я бы с радостью продлил еще на два года, чтобы не мучиться с временным доменом и меня уже знали по red-star-soft. com,. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru