2016-11-11 2 views
0

Итак, у меня есть DataStructure, который я хочу сохранить в своем приложении REST Spring. Это, как я инициализация @beanEOFException весной REST

@Configuration 
public class MessageBrokerInitializer { 

    @Bean 
    public MessageBroker getMessageBroker(){ 

     FileInputStream fileInputStream; 
     ObjectInputStream objectInputStream; 
     MessageBroker broker = null; 
     try { 
      fileInputStream = new FileInputStream("./data/store.ser"); 
      objectInputStream = new ObjectInputStream(fileInputStream); 
      broker = (MessageBroker) objectInputStream.readObject(); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (ClassNotFoundException e) { 
      e.printStackTrace(); 
     } 

     return (broker == null) ? new MessageBroker(): broker; 
    } 



} 

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

java.io.EOFException

Как я могу получить эту работу.

ответ

0

Вы можете избежать EOFException путем проверки objectInputStream.available() для числа байтов, которые можно прочитать, как показано ниже:

@Configuration 
public class MessageBrokerInitializer { 

    @Bean 
    public MessageBroker getMessageBroker(){ 

     FileInputStream fileInputStream; 
     ObjectInputStream objectInputStream; 
     MessageBroker broker = null; 
     try { 
      fileInputStream = new FileInputStream("./data/store.ser"); 

      if(fileInputStream.available() != 0) { 
       objectInputStream = new ObjectInputStream(fileInputStream); 
       broker = (MessageBroker) objectInputStream.readObject(); 
      } else { 
       broker = new MessageBroker() 
      }    
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (ClassNotFoundException e) { 
      e.printStackTrace(); 
     } 
     return broker; 
    } 
} 

Вы можете посмотреть here

+0

Ну даже это бросает EOF. Как читать файл без содержимого. –

+0

Что происходит, когда вы пытаетесь отладить значение для объектаInputStream.available()? это 0? – developer

+0

Я исправил это, переместив 'доступный()' один уровень вверх, как при проверке 'fileInputStream.available()' –