향후 워크 아웃을 계획하는 데 도움이되는 작은 프로그램을 작성 중입니다. 나는 거의 끝내고 있지만 저축과 적재는 나에게 약간의 문제를주고있다. 이 프로그램은 여러 가지 특성 (예 : Dat 및 일부 int 및 double 값)을 보유하고있는 "ride"(사용자 정의 클래스) 객체 목록과 함께 작동합니다.Java 프로그램에서 사용자 정의 오브젝트 저장 및로드
지금 저는 두 가지 방법, "보호기" 및 "로더":
public void saver() {
try{ // Catch errors in I/O if necessary.
// Open a file to write to, named SavedObj.sav.
FileOutputStream saveFile=new FileOutputStream("SaveObj.sav");
// Create an ObjectOutputStream to put objects into save file.
ObjectOutputStream save = new ObjectOutputStream(saveFile);
// Now we do the save.
for (int x = 0; x < rides.size(); x++) {
save.writeObject(rides.get(x).getDate());
save.writeObject(rides.get(x).getMinutes());
save.writeObject(0);
save.writeObject(rides.get(x).getIF());
save.writeObject(rides.get(x).getTss());
}
// Close the file.
save.close(); // This also closes saveFile.
}
catch(Exception exc){
exc.printStackTrace(); // If there was an error, print the info.
}
}
public void loader() {
try{
// Open file to read from, named SavedObj.sav.
FileInputStream saveFile = new FileInputStream("SaveObj.sav");
// Create an ObjectInputStream to get objects from save file.
ObjectInputStream save = new ObjectInputStream(saveFile);
Ride worker;
while(save.available() > 0) {
worker = new Ride((Date)save.readObject(), (int)save.readObject(), (double)save.readObject(), (double)save.readObject(), (int)save.readObject());
addRide(worker.getDate(), worker.getMinutes(), 0, worker.getIF(), worker.getTss());
}
// Close the file.
save.close(); // This also closes saveFile.
}
catch(Exception exc){
exc.printStackTrace(); // If there was an error, print the info.
}
}
프로그램을 실행할 때 "저장"또는 "로드"도 오류를 반환하지 않습니다. .sav 파일은 프로그램이 없을 때 만들어지며 프로그램을 실행할 때마다 편집됩니다. 그러나이 프로그램은 이전 세션의 데이터를 복원하지 않습니다. 자세한 정보가 필요한 경우 알려 주시기 바랍니다. 도움에 미리 감사드립니다!
.sav 파일에 내용이 있습니까? – CraigR8806
'while (save.available()> 0) 아래의 로더에 중단 점을 추가하는 것은 어떻습니까? 코드가'worker ='로 시작하는 라인에 닿습니까? 그렇다면 여기서 무엇이 일어나고 있습니까? – ControlAltDel
저장 파일에 "내용"이 있습니다. 그러나 프로그램을 업데이트 할 때 변경되지 않는 것 같습니다. 로더 내부에 system.out.print를 추가했는데 출력되지 않습니다. – e6r339b