所以我有 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
我怎样才能让它工作。
您可以通过检查
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;
}
}
你可以看这里