학생 클래스에서 일련의 객체를 만들어 벡터에 저장합니다. 일단 생성되면 .ser 파일에 각 객체를 씁니다. 그런 다음 다시 읽었습니다. 내 코드가 완벽하게 작동합니다. 내가 알고 싶은 것은, 내가하는 일이 옳다는 것인가 아니면 이것이 쉽고 최적화 된 방법일까요 ?? 또한 파일 전체를 다시 표시하지 않고 .ser 파일에서 특정 개체를 바꾸거나 삭제하는 방법도 있습니다.ObjectOutputStream을 사용하여 .ser 파일에 일련의 객체를 작성하고 다시 읽어들이는 가장 좋은 방법
학생 클래스
public class Student implements Comparable<Student>, Serializable{
private String firstName = "";
private int registrationNumber;
private int coursework1;
private int coursework2;
private int finalExam;
private double moduleMark;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public int getRegistrationNumber() {
return registrationNumber;
}
public void setRegistrationNumber(int registrationNumber) {
this.registrationNumber = registrationNumber;
}
public int getCoursework1() {
return coursework1;
}
public void setCoursework1(int coursework1) {
this.coursework1 = coursework1;
}
public int getCoursework2() {
return coursework2;
}
public void setCoursework2(int coursework2) {
this.coursework2 = coursework2;
}
public int getFinalExam() {
return finalExam;
}
public void setFinalExam(int finalExam) {
this.finalExam = finalExam;
}
public double getModuleMark() {
return moduleMark;
}
public void setModuleMark(double moduleMark) {
this.moduleMark = moduleMark;
}
public int compareTo(Student s){
if (this.moduleMark > s.moduleMark)
return 1;
else if (this.moduleMark == s.moduleMark)
return 0;
else
return -1;
}
}
파일 쓰기 부분
public static void Write(Student mm){
try
{
FileOutputStream fileOut = new FileOutputStream("info.ser",true);
ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(fileOut));
out.writeObject(mm);
out.close();
fileOut.close();
System.out.println("Serialized data is saved in info.ser");
}catch(IOException i)
{
//i.printStackTrace();
}
}
읽기 부분
public static int Read() {
int count=0;
try{
vector = new Vector<Student>();
FileInputStream saveFile = new FileInputStream("info.ser");
ObjectInputStream save;
try{
for(;;){
save = new ObjectInputStream(saveFile);
student = (Student) save.readObject();
vector.add(student);
count++;
}
}catch(EOFException e){
//e.printStackTrace();
}
saveFile.close();
}catch(Exception exc){
exc.printStackTrace();
}
return count;
}
이 사이트는 작동 코드가 아닙니다. 대신이 질문을 codereview.stackexchange.com에 게시해야합니다. –