[JAVA] ObjectInputStream, ObjectOutputStream ์ ๋ฆฌ
in Tech-Stack on JAVA
Contents
ObjectOutputStream
๊ฐ์ฒด๋ฅผ ์ถ๋ ฅํ๋ ์คํธ๋ฆผ์ด๋ค.
๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ์์ฑ์์ ๋งค๊ฐ๋ณ์๋ก FileOutputStream ๊ฐ์ฒด๋ฅผ ๋ฃ์ด์ผ ํ๋ค.
ex) ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(File));
writeObject(๊ฐ์ฒด) : ๊ฐ์ฒด ๋จ์๋ก ์ถ๋ ฅํ๋ค.
- ์ง๋ ฌํ(Serializable)๊ฐ ๋์ง ์์ ๊ฐ์ฒด๋ ์ถ๋ ฅ์ด ๋ถ๊ฐ๋ฅํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก
implements Serializable๋ฅผ ํตํด ๊ตฌํ์ ๊ผญ ํ์. - Serializable๋ฅผ ๊ตฌํํ์ง ์์์ ๊ฒฝ์ฐ
java.io.NotSerializableException์์ธ๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๋ค.
์ฆ ์ง๋ ฌํ๊ฐ ๊ตฌํ๋์ด ์๋ ์๋ฃํ์ ๋ฐ๋ก ์ถ๋ ฅ์ด ๊ฐ๋ฅํ๋ค.
ArrayList๋ ์ง๋ ฌํ๊ฐ ๊ตฌํ๋ ํด๋์ค๋ผ์ ์๋์ ๊ฐ์ด ํ๋ฒ์ ์ถ๋ ฅ์ด ๊ฐ๋ฅํ๋ค.
ArrayList implements Serializable {}
...
ArrayList<Info> al = new ArrayList<>();
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(File));
oos.writeObject(al);
์ด ๊ฒฝ์ฐ์๋ Info ํด๋์ค ๋ํ ์ง๋ ฌํ๋ฅผ ๊ตฌํํ ์ํ์ฌ์ผ ํ๋ค.
ObjectInputStream
๊ฐ์ฒด๋ฅผ ์ฝ์ด์ค๋ ์คํธ๋ฆผ์ด๋ค.
๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ์์ฑ์์ ๋งค๊ฐ๋ณ์๋ก FileInputStream๊ฐ์ฒด๋ฅผ ๋ฃ์ด์ผ ํ๋ค.
ex) ObjectInputStream ois = new ObjectInputStream(new FileOutputStream(File));
readObject() : Object ๋ณ์๋ก ๊ฐ์ ๋ฐ์ผ๋ฉด ๋๋ค.
- Objectํ ๋ณ์๋ก ํด๋น ๊ฐ์ ๋ฐ์ ํ(์๋ ์
์บ์คํ
) ์ํ๋ ์๋ฃํ์ผ๋ก ๋ค์ด์บ์คํ
์ ํด์ ์ฌ์ฉํ๋ฉด ๋๋ค.
Object obj = ois.readObject(); Info i = (Info) obj;
readObject()๋ฅผ ์ฌ์ฉํ ๋ ํ์ผ์ ์
๋ ฅ๋ Object๊ฐ ์์ด์ ์ฝ์ด์จ ๋ณ์๊ฐ ์์ ๋ EOFException ์์ธ๊ฐ ๋ฐ์ํ๋ค.
try / catch๋ฅผ ํตํ์ฌ ์์ธ์ฒ๋ฆฌ๋ฅผ ํ๋ฉด ๋๋ค.
