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

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

24.01.2017, 18:49. Показов 1198. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru