我正在尝试为“帐户”列表实现一个加载/保存,方法与我成功使用的哈希图方法类似。
背景:
private List accounts;
public AccountManager() {
try {
accounts = LoadSave.loadAccounts();
} catch (IOException e) {
e.printStackTrace();
}
}
在这里,我想设置我的帐户列表以包括已保存的帐户。
加载/保存实现:
public static void saveAccounts(List accounts) throws IOException {
try {
FileOutputStream fos = new FileOutputStream("accounts.ser");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(accounts);
oos.close();
fos.close();
System.out.printf("Saved account.");
}
catch(IOException ioe) {
ioe.printStackTrace();
}
}
public static List loadAccounts() throws IOException {
List accounts = null;
try {
FileInputStream fis = new FileInputStream("accounts.ser");
ObjectInputStream ois = new ObjectInputStream(fis);
accounts = (List) ois.readObject();
ois.close();
fis.close();
}
catch(IOException ioe) {
ioe.printStackTrace();
}
catch(ClassNotFoundException c) {
System.out.println("Class not found");
c.printStackTrace();
}
return accounts;
}
问题
是指当我第一次初始化accountmanager时,accounts.ser文件没有保存的帐户,因为该功能是在后面的方法中实现的,因此我得到以下异常:
java.io.eofe例外
在Java.Io.ObjistInPoSt流$ PeeKnPixStudio.Read(Objutin Purvest.java:2681)
在Java.Io.ObjistInPvestFielsBubDATAN中。
在Java.Io.ObjistInPoStudio.Read流头(ObjistInPoStf.java:862)
在Java.IO .ObjistInPoStut..(ObjutsIdPoStudio.java:358)
在实现过程中,SooRojyOnMy.LooSuf.Load帐号(LooSave.java:69)
会计管理器(ActudioMault.java:81)
位于sun.reflect.NativeConstructorAccessorImpl.NewInstance0(本机方法)
在Sun.Currest.NATVEngRealStopeRoopRIP.NeWistPoT(NATVECONTRORESUTIORIORIMP.JAVA:62)
在Sun中。
在Java.Lang.Exrime.构造函数. NeWistSiston(构造函数. Java:423)
在Java.Lang.class .NeWist立场(class .java:442)
在Sun。反射。MISC.Currtutul。NeWist立场(Errastutul。Java:51)
在JavaFx.fxMxFxMLooLoad $ ValueEngult.PurtalStury(FxMLoopeRel.java:927)
在JavaFX.FXML.fxMLooper-$StaseCdEclipse元素.PurtalPosits(FxMLoopeRel.java:971)
在JavaFx.fxMxFxMLoopeL$元素.PurrestSistelEtmin(FxMLoopeRel.java:220)
在JavaFx.fxMxFxMLooLoad $ ValueEngulyPurrestSistelEtEngs:FxMLoopeRel.java:744)
在JavaFx.fxMxFxMLooLoul.PrimeStistelEtmin(FxMLoopeRel.java:2707)
在JavaFx.fxMxFxMLooLoul.LaDimple(FxMLoopeRel.java:2527)
在JavaFx.fxMxFxMLooLoul.LaDimple(FxMLoopeRel.java:2441)
在JavaFX.FXML.FXMLooLoul.Load(FxMLoopeRel.java:2409)
在实施过程中。
at sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
在Sun.Real.nTyvEndoDealOrthIMP.LoCKE(NATEVEMEDAccess ORIL .java:62)
在Sun中。
在Java.Lang.Exrime.Frut.CuoKE(方法.java:498)
在Sun。反射。MISC。蹦床。调用(Multudiu.java:71)
在sun.reflect.GenerateMethodAccessor3.invoke处(未知源)
在Sun中。
在Java.Lang.Exrime.Frut.CuoKE(方法.java:498)
在Sun.Simult.MISC.Multudi.LooCKE(Multudiu.java:275)
在JavaFX.fxMxFxMLooper-$MultHuffer-LoopK.FunKE(FxMLoopeRel.java:1771)
在JavaFx.fxMxFxMLooper-$MekOrthMeoDeVthHANDL.句柄(FxMLoopeRel.java:1657)
在COM.Sun.javaFx.Envult.CypItEnEdEnDANDLo.Debug CuffBulgEngEvin(CypIdEvEnEnthDelaL.java:86)
在COM.Sun.javaFx.EvestHANDLeMealth.Debug的BuffBrin事件(EvEnthDr.Mealth.java):238)
在COM.Sun.javaFx.EvestHANDLeMealth.Debug的BuffBrin事件(EvEnthDr.Mealth.java):191)
在COM.Sun.javaFx.Envult.CypItEngEndoServ.DeaPrdBuffBuleEngEvin(CypItEngEndoService .java:59)
在COM.Sun.javaFx.Evras.Basic EngestPoxServ.Debug事件(BaseCebug分派器.java:58)
在COM.Sun.javaFx.EvestDebug ChcIn IMP.Debug事件(EvestDebug China IMP.java:114)
在COM.Sun.javaFx.Evras.Basic EngestPoxServ.Debug事件(BaseCebug分派器.java:56)
在COM.Sun.javaFx.EvestDebug ChcIn IMP.Debug事件(EvestDebug China IMP.java:114)
在COM.Sun.javaFx.Evras.Basic EngestPoxServ.Debug事件(BaseCebug分派器.java:56)
在COM.Sun.javaFx.EvestDebug ChcIn IMP.Debug事件(EvestDebug China IMP.java:114)
在COM.Sun.javaFx.Evras.Basic EngestPoxServ.Debug事件(BaseCebug分派器.java:56)
在COM.Sun.javaFx.EvestDebug ChcIn IMP.Debug事件(EvestDebug China IMP.java:114)
在COM.Sun.javaFx.Evras.Basic EngestPoxServ.Debug事件(BaseCebug分派器.java:56)
在COM.Sun.javaFx.EvestDebug ChcIn IMP.Debug事件(EvestDebug China IMP.java:114)
在COM.Sun.javaFx.Enguly.Enviut.FielnTimPL(Enviut.java:74)
在COM.Sun.javaFx.Envult. Enviut.FielEvin(Enviut.java:49)
在JavaFx.Evas.Evest.FielEvvices(事件.java:198)
在JavaFx.Field.No.FielEvices(No.java:8411)
在JavaFx.Field.Button,Field.按钮(Java:JAVA:185)
在COM.Sun.javaFx.Field.Value.ButnOrth.MousSerelPosid(ButoDealth.java:182)
在COM.Sun.javaFx.Field.Simult.Cuth.EngultSkasBase$ 1 .句柄(ErrimeSkasBase. Java:96)
在COM.Sun.javaFx.Field.Simult.Cuth.EngultSkasBase$ 1 .句柄(ErrimeSkasBase. Java:89)
在COM.Sun.javaFx.Envult.CypItEnEnEdvANDLL $ RealEnvEnEdErdRealEng.HooLeBuffBrin事件(CypIdEVENDENDELL.java:218)
在COM.Sun.javaFx.Envult.CypItEnEdEnDANDLo.Debug CuffBulgEngEvin(CypIdEvEnEnthDelaL.java:80)
在COM.Sun.javaFx.EvestHANDLeMealth.Debug的BuffBrin事件(EvEnthDr.Mealth.java):238)
在COM.Sun.javaFx.EvestHANDLeMealth.Debug的BuffBrin事件(EvEnthDr.Mealth.java):191)
在COM.Sun.javaFx.Envult.CypItEngEndoServ.DeaPrdBuffBuleEngEvin(CypItEngEndoService .java:59)
在COM.Sun.javaFx.Evras.Basic EngestPoxServ.Debug事件(BaseCebug分派器.java:58)
在COM.Sun.javaFx.EvestDebug ChcIn IMP.Debug事件(EvestDebug China IMP.java:114)
在COM.Sun.javaFx.Evras.Basic EngestPoxServ.Debug事件(BaseCebug分派器.java:56)
在COM.Sun.javaFx.EvestDebug ChcIn IMP.Debug事件(EvestDebug China IMP.java:114)
在COM.Sun.javaFx.Evras.Basic EngestPoxServ.Debug事件(BaseCebug分派器.java:56)
在COM.Sun.javaFx.EvestDebug ChcIn IMP.Debug事件(EvestDebug China IMP.java:114)
在COM.Sun.javaFx.Evras.Basic EngestPoxServ.Debug事件(BaseCebug分派器.java:56)
在COM.Sun.javaFx.EvestDebug ChcIn IMP.Debug事件(EvestDebug China IMP.java:114)
在COM.Sun.javaFx.Evras.Basic EngestPoxServ.Debug事件(BaseCebug分派器.java:56)
在COM.Sun.javaFx.EvestDebug ChcIn IMP.Debug事件(EvestDebug China IMP.java:114)
在COM.Sun.javaFx.Enguly.Enviut.FielnTimPL(Enviut.java:74)
在COM.Sun.javaFx.Envult. Enviut.FielEvin(Enviut.java:54)
在JavaFx.Evas.Evest.FielEvvices(事件.java:198)
在javafx.Field.MouthMousHealth.Actudio(场景:Java:3757)
在javafx.Field.MouthMousHealth.Access 1500美元(Field.java:3485)
在javafx.FieldPrimeMouthEvin(场景:Java:1762)
在javafx.Field.场景ScEnPeelListNe.MousEnvivin(场景. Java:2494)
在COM.Sun.javax.tk.Qual.GalasVIEW EvsEngEngult.$MouSeEngultReal.Run(GalasVIEW EvestHANDL.java:394)
在COM.Sun.javax.tk.Qual.GalasVIEW EvsEngEngult.$MouSeEngultReal.Run(GalasVIEW EvestHANDL.java:295)
在Java.Security .Access控制器上。
在COM.Sun.javax.tk.Qual.GalasVIEW EvrEnDANDANL.LAMBDA $ HuffLeMexEnter事件353美元(GlassViewEventHandler . Java: 432)
在COM.Sun.javax.tk.Quest.QuangUnTooTok.RunWuffTruteDelCub(QuanguthTooKo.java:389)
在COM.Sun.javax.tk.Qual.GalasVIEW EvrEnDeNeLo.HoalMuleMouthEvin(GalasVIEW EvestHANDL.JAVA:431)
在COM.Sun.lg.lut.View .HaveMuleSeEvices(View,Java:555)
在COM.Sun.lg.lu.view .NoTyMyWork(View,Java:937)
在com.sun.glass.ui.win.winapplication.runloop(本机方法)
在COM.Sun.lg.UI.Win .WiFalp.lambda $ NULL $ 147(WiNeava. Java:177)
在Java.Lang.Trime.Run(线程.java:748)
我尝试将帐户设置为新的arraylist,以捕获eofexception,但它仍然抛出eofexception。我希望每当打开“帐户管理器”窗口时都能够加载帐户,因此我需要能够在构造函数中加载帐户。