Java/파일 입출력

[Java / 파일 입출력] 객체

2024. 12. 27. 12:08

객체 출력

객체 형식의 데이터를 파일 출력하는 방식

  • 직렬화(`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
'Java/파일 입출력' 카테고리의 다른 글
  • [Java / 파일 입출력] String
  • [Java / 파일 입출력] 멀티 바이트
  • [Java / 파일 입출력] 싱글 바이트
  • [Java / 파일 입출력] File과 Directory
개발하는 벌꿀오소리
개발하는 벌꿀오소리
겁없는 벌꿀오소리처럼 끊임없이 도전하자!
  • 글쓰기 관리
  • 개발하는 벌꿀오소리
    벌꿀오소리의 개발 노트
    개발하는 벌꿀오소리
  • 전체
    오늘
    어제
    • 분류 전체보기 (74)
      • Java (60)
        • 기본 (23)
        • 모듈 (8)
        • 자료구조 (5)
        • 알고리즘 (0)
        • 파일 입출력 (5)
        • JDBC (5)
        • Spring Boot (14)
      • Oracle (13)
      • Project (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 인기 글

  • 공지사항

  • hELLO· Designed By정상우.v4.10.3
개발하는 벌꿀오소리
[Java / 파일 입출력] 객체
상단으로

티스토리툴바