2014-11-09 3 views
-1
System.out.println("======================================"); 
System.out.println("List of Ships and their revenue"); 
System.out.println("======================================"); 

try 
    { 
    inputStream = new ObjectInputStream (new FileInputStream (fileName)); 

    } 
catch (Exception e) 
    { 
     System.out.println("Problem"); 
    } 

try 
    { 
    while (true) 
    { 
     Ship copyObject = (Ship)inputStream.readObject(); 
     System.out.println(copyObject.getShipName() + "  " + copyObject.getRevenue());// fix format later 
    } 

    } 
catch (EOFException e) 
    { 
    } 
catch (Exception e) 
    { 
    } 

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

================================= 
List of Ships and their revenue 
================================= 

Это, вероятно, означает, что есть что-то не так с блоком попробовать. Обратите внимание, что это только часть моей программы, которая связана с результатом, который я хочу получить. Ship является суперклассом классов, к которым принадлежит объект в файле. (обновление: я просто распечатываю исключение, но исключение не генерируется).

+1

Почему вы не печатаете содержимое блоков исключений? – Reimeus

+0

Я попытался, но исключение не выбрано – user4147874

+2

Поместите 'e.printStackTrace()' внутри ваших блоков 'catch'. –

ответ

-1

По внешнему виду вы находитесь в бесконечном цикле, который умирает с исключением, которое не приводит к выходу. Попробуйте сделать следующее вместо гигантского второго блока catch try.

while(true) { 
    try{ 
    Ship copyObject = (Ship)inputStream.readObject(); 
    System.out.println(copyObject.getShipName() + "  " + copyObject.getRevenue()); 
    } 
    catch(Exception ex) { 
    System.out.println("No more ships"); 
    break; 
    } 
} 
+0

Моя проблема в том, что я забыл сделать один родственный класс сериализуемым. Хотя я меняю свою программу, она не заставляет ее работать. Но спасибо вам в любом случае. – user4147874

+0

Было бы точно напечатать «больше кораблей», когда будет обнаружено «EOFException». Любое другое исключение указывает на совершенно другую проблему, которая должна быть напечатана сама. – EJP

+0

Вы правы, но я опубликовал, что очень поздно и очень устал :) – MiltoxBeyond

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