Spring REST 中的 EOFException

问题描述 投票:0回答:1

所以我有 DataStructure,我想在我的 Spring REST 应用程序中保留。 这就是我初始化

@bean

的方式
@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

我怎样才能让它工作。

java spring
1个回答
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;
    }
}

你可以看这里

© www.soinside.com 2019 - 2024. All rights reserved.