JAVA/코드

2022_10_27 연습 05 com.ssc.serializable

0304호 2022. 10. 27.
package com.ssc.serializable;

import java.util.*;
import java.io.*;

public class SerialiizableMain {
	public static void main(String[] args) {
		try(/*인스턴스 단위에 파일에 기록할 수 있는 객체를 생성*/
			ObjectOutputStream oos = new ObjectOutputStream(
					new FileOutputStream("multiobject.txt"))
			) {
			
			//기록할 인스턴스를 생성
			StudentDTO dto1 = new StudentDTO(1,"아담",new Date());
			StudentDTO dto2 = new StudentDTO(2,"강진축구",new Date());
			
			//기록할 인스턴스가 여러개면 하나의 list로 묶어준다
			ArrayList<StudentDTO> list = 
					new ArrayList<>();
			//리스트에 데이터 추가
			list.add(dto1);
			list.add(dto2);
			
			//기록
			oos.writeObject(list);
			
			//종료
//			oos.close();
		} catch (Exception e) {
			System.out.println(e.getLocalizedMessage());
		}
	
		try(//인스턴스 단위에 파일에 기록할 수 있는 객체를 생성
			ObjectInputStream ois = new ObjectInputStream(
					new FileInputStream("multiobject.txt"))
			) {
			
			//기록을 할 때 List를 사용했으면 읽어올때도 List로 읽어야한다
			ArrayList list = (ArrayList) ois.readObject();

			for(Object obj : list) {
				System.out.println(obj);
			}
			//종료
//			ois.close();
			
		} catch (Exception e) {
			System.out.println(e.getLocalizedMessage());
		}
		
		
	}
	

}​
package com.ssc.serializable;
import java.io.Serializable;
import java.util.*;

//인스턴스 단위로 읽고 쓰기가 가능한 클래스 - Serializable 인터페이스 때문
public class StudentDTO implements Serializable{
	
	private int num;
	private String name;
	private Date birthday;
	public StudentDTO() {
		super();
		// TODO Auto-generated constructor stub
	}
	public StudentDTO(int num, String name, Date birthday) {
		super();
		this.num = num;
		this.name = name;
		this.birthday = birthday;
	}
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	@Override
	public String toString() {
		return "StudentDTO [num=" + num + ", name=" + name + ", birthday=" + birthday + "]";
	}
	
	
}

댓글