객체 출력
객체 형식의 데이터를 파일 출력하는 방식
- 직렬화(`Serialize`) + 분해 + 임시저장 + 출력을 단계별로 진행
- `java.io.Serializable`을 상속받은 클래스만 출력 가능
- `IoException` 예외 전가 필수
File dir = new File("sample");
dir.mkdirs();
File target = new File("sample", "object.kh");
FileOutputStream out = new FileOutputStream(target);
BufferedOutputStream buffer = new BufferedOutputStream(out);
ObjectOutputStream obj = new ObjectOutputStream(buffer);
Date d = new Date();
obj.writeObject(d);
Student st = new Student("홍길동", 90);
obj.writeObject(st);
obj.close();
public class Student implements Serializable {
private static final long serialVersionUID = 2L;
private String name;
private transient int score;
@Override
public String toString() {
return "Student [name=" + name + ", score=" + score + "]";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public Student(String name, int score) {
super();
this.name = name;
this.score = score;
}
}
Serializable
직렬화할 수 있게 해주는 인터페이스
직렬화
객체를 바이트 스트림으로 변환하여 파일에 저장하거나 네트워크를 통해 전송해주는 과정
serialVersionUID
클래스 버전 관리를 위한 고유 식별자
- 직렬화와 역직렬화 과정에서 객체의 클래스 버전이 일치하는지 확인
private static final long serialVersionUID = 2L;
transient
객체 입출력에서 특정 필드를 제외하는 키워드
private transient int score;
ObjectOutputStream
객체를 직렬화하여 바이트 스트림으로 변환하여 출력하는 클래스
ObjectOutputStream obj = new ObjectOutputStream(buffer);
.writeObject()
파일에 객체 데이터를 출력하는 메서드
obj.writeObject(d)
.close()
객체 출력 통로를 해제하는 메서드
obj.close()
객체 입력
객체 형식의 데이터를 파일에서 입력받는 방식
- 역직렬화(`Deserialize`) + 합성 + 임시저장 + 입력을 단계별로 진행
- 종류와 무관하게 `Object`로 읽음
- `IoException`, `ClassNotFoundException` 예외 전가 필수
File target = new File("sample", "object.kh");
FileInputStream in = new FileInputStream(target);
BufferedInputStream buffer = new BufferedInputStream(in);
ObjectInputStream obj = new ObjectInputStream(buffer);
Date a = (Date) obj.readObject();
Student b = (Student) obj.readObject();
obj.close();
System.out.println("a = " + a);
System.out.println("b = " + b);
역직렬화
직렬화된 객체를 다시 원래의 객체로 복원하는 과정
ObjectInputStream
직렬화된 객체를 역직렬화하여 원래의 객체 형태로 복원하는 스트림 클래스
ObjectInputStream obj = new ObjectInputStream(buffer);
.readObject()
파일에서 객체 데이터를 입력받는 메서드
- 원래의 객체 형태로 형변환
obj.readObject()
.close()
객체 입력 통로를 해제하는 메서드
obj.close()
'Java > 파일 입출력' 카테고리의 다른 글
[Java / 파일 입출력] String (0) | 2024.12.27 |
---|---|
[Java / 파일 입출력] 멀티 바이트 (0) | 2024.12.27 |
[Java / 파일 입출력] 싱글 바이트 (1) | 2024.12.27 |
[Java / 파일 입출력] File과 Directory (0) | 2024.12.27 |