ObjectInputStream, ObjectOutputStream : 객체를 파일에 읽고 쓰는 클래스
직렬화 ( serialization )
- 객체를 파일에 쓴다. 라는 말은 객체를 스트림으로 만든다라고 말하는 것과 같다.
이것을 또 다르게 말하면 " 객체의 직렬화 " 라고 한다.
" Serializable " 인터페이스를 구현한 클래스로 만든 객체만 파일에 쓸 수 있다.
ex) Date data = new Date; // Date클래스는 Serializable 인터페이스를 구현함
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.Date; public class Example { public static void main(String[] args) { try { /* ObjectOutputStream*/ Date data = new Date(); FileOutputStream fos = new FileOutputStream("anse//java"); ObjectOutputStream oos = new ObjectOutputStream(fos); // 실제로 -12312414 와 같이 바이트 형식으로 작성되지만 // ObjectInputStream으로 읽으면 정상적으로 노출됨 oos.writeObject(data); fos.close(); oos.close(); /* ObjectInputStream */ FileInputStream fis = new FileInputStream("anse//java"); ObjectInputStream ois = new ObjectInputStream(fis); data = (Date)ois.readObject(); // Mon Oct 07 16:09:57 KST 2019 <- 정상 출력됨 System.out.println(data.toString()); fis.close(); ois.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } | cs |
'DEV > JAVA' 카테고리의 다른 글
io_5 : 총 13개 클래스 정리 (0) | 2019.10.08 |
---|---|
id_4 : BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter (0) | 2019.10.08 |
io_2 : DataInputStream, DataOutputStream (0) | 2019.10.07 |
io_1 : File, FileReader, FileWriter, FileInputStream, FileOutputStream (0) | 2019.10.07 |
java LinkedList 와 Iterator (0) | 2019.10.04 |