[JAVA] ObjectInputStream, ObjectOutputStream ์ •๋ฆฌ


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๋ฅผ ํ†ตํ•˜์—ฌ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋ฉด ๋œ๋‹ค.




ยฉ 2022. by Yejin Ha

Powered by JihyunRyu