因此,我有一个DataStructure,我想在Spring应用程序中持久化。我就是这样初始化@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
我怎么才能让这件事发生。
发布于 2016-11-11 21:55:17
可以通过检查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;
}
}你可以看上去像这里
https://stackoverflow.com/questions/40556739
复制相似问题