나는 라이브러리 시스템에 대한 멤버를 등록하는 프로그램을 만들었습니다. 데이터를 저장하려면 텍스트 파일을 사용하고 직렬화를 읽거나 쓸 수 있어야합니다.추가하는 동안 파일에 객체 쓰기
내 문제는 회원 한 명을 등록하고 다른 회원을 등록하려고 할 때 두 번째 회원 기록이 저장되지 않는다는 것입니다. 파일에 쓰기를 추가하기 위해 "true"라는 키워드를 사용했습니다. 여기
내가 무엇을했는지 있습니다 :
//Am writing the object to a file
public void RegisterMembers(Members object) {
try{
FileOutputStream write=new FileOutputStream("Memberships.txt",true);
ObjectOutputStream writeFile=new ObjectOutputStream(write);
writeFile.writeObject(object);
writeFile.flush();
writeFile.close();
}catch(Exception e){
Frame frame=new Frame();
JOptionPane.showMessageDialog(frame,"Storage file not found");
}
}
//Method to read from the file
public void readMemberships() throws FileNotFoundException, IOException, ClassNotFoundException{
Person object;
FileInputStream read=new FileInputStream("Memberships.txt");
ObjectInputStream readFile=new ObjectInputStream(read);
object=(Person)readFile.readObject();
System.out.println(object);
}
//Here is a piece of code which is in the gui frame which i implemented
Members newMember=new Members(firstName,initials,birthDay,birthMonth,birthYear,Gender,memberid,address,tele,membershipType,paymentType);
newMember.RegisterMembers(newMember); //calls the 2 methods
newMember.readMemberships();
무슨 일이 오류를 것 같다? 나는 그것을 쓸 때 추가하기를 원한다.
감사합니다.
이것은 좋은 디자인이 아니며 여러 객체 출력 스트림을 하나의 파일에 저장하고 현재 디자인으로 객체를 deserialize하는 방법은 무엇입니까? ( 불특정 예외를 잡기 없습니다 "; (저장 파일을 찾을 수 없습니다" } JOptionPane.showMessageDialog, 프레임) "} 캐치 (예외 전자) { 프레임 프레임 = 새로운 프레임()" –
같은 코드를 사용하지 마십시오 일부 하위 유형)이 잘못되었습니다. JOptionPane의 파라미터를 가지기 위해서 (때문에) 프레임을 작성하는 것은 나쁘다 (의심되는 경우는 null를 건네 준다). – Matthias