Programing_Java

Section#19 _ ํŒŒ์ผ ์ž…์ถœ๋ ฅ ๋ณธ๋ฌธ

๐Ÿ“œ MENTOR JAVA

Section#19 _ ํŒŒ์ผ ์ž…์ถœ๋ ฅ

Joyfullyever 2025. 1. 26. 18:38

#1 ์ž๋ฐ” ์ž…์ถœ๋ ฅ๊ณผ ์ŠคํŠธ๋ฆผ

: ์ž๋ฐ”๋Š” ์ž…์ถœ๋ ฅ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋ณ„๋„์˜ I/O ํŒจํ‚ค์ง€๋ฅผ ์ œ๊ณต

: ์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๋””์Šคํฌ์— ์ ‘๊ทผํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ์ž‘์—…์„ ๋„์™€์ฃผ๋Š” ํ†ต๋กœ → ์ŠคํŠธ๋ฆผ, ๊ฐ€์ƒ ํ†ต๋กœ

 

์ž…์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์˜ ํŠน์ง•

: ํ”„๋กœ๊ทธ๋žจ์„ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ, ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜๊ฐ€๋ฉด ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ

: ๋™์‹œ์— ์ง„ํ–‰๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ฐ๊ฐ ๋…๋ฆฝ์ ์œผ๋กœ ํ•œ ๊ฐ€์ง€ ๊ธฐ๋Šฅ๋งŒ ๋™์ž‘ → ์ŠคํŠธ๋ฆผ์ด ๋”ฐ๋กœ ํ•„์š”ํ•จ

 

์ฃผ์š” ํŠน์ง•

: ์ŠคํŠธ๋ฆผ์˜ ์–‘ ๋์—์„œ ์ „๋‹ฌ์ด ์ด๋ฃจ์–ด์ง

: ๋‹จ๋ฐฉํ–ฅ ํ†ต์‹  → ์ž…, ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์„ ๋ณ„๋„๋กœ ์‚ฌ์šฉ

: ์—ฐ์†๋œ ๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„์œผ๋กœ ์ž…์ถœ๋ ฅ ์ง„ํ–‰ ์‹œ ๋‹ค๋ฅธ ์ž‘์—…์„ ํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ

: ๋™์ผํ•œ ํ”„๋กœ๊ทธ๋žจ ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Œ

 

#2 ์ž…์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์˜ ์ข…๋ฅ˜

: ์ „๋‹ฌ ๋ฐฉ์‹์— ๋”ฐ๋ผ byte ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ๊ณผ char ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๊ตฌ๋ถ„

byte ๊ธฐ๋ฐ˜ → ๋ฐ์ดํ„ฐ๋ฅผ ์ปดํ“จํ„ฐ์˜ ๊ธฐ๋ณธ ๋‹จ์œ„์ธ byte ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด ์ฝ๊ฑฐ๋‚˜ ์“ฐ๊ธฐ

char ๊ธฐ๋ฐ˜ → ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ๋ฌธ์„œ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ŠคํŠธ๋ฆผ

byte ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ char ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ
๋ชจ๋“  ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ ๊ฐ€๋Šฅ ๋ฌธ์ž ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ€๋Šฅ
๊ทธ๋ฆผ, ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด, ๋ฌธ์ž ๋“ฑ ํ…์ŠคํŠธ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์„œ

 

 

#3 byte ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ

 

InputStream : ๋ฐ”์ดํŠธ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ

: ์ตœ์ƒ์œ„ ํด๋ž˜์Šค๋กœ InputStream ๊ฐ์ฒด๊ฐ€ ์ œ๊ณต → ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์ƒ์†ํ•ด ๋‹ค์–‘ํ•œ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ๋“ค์ด ์กด์žฌ

 

FileInputStream

: ํŒŒ์ผ์—์„œ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ์ž๋ฃŒ๋ฅผ ์ฝ์–ด ๋“ค์ผ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ŠคํŠธ๋ฆผ

: ์„ ์–ธ ๋ฐฉ๋ฒ•

new FileInputStream(๊ฒฝ๋กœ/ํŒŒ์ผ๋ช…);
// ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํŒŒ์ผ๋ช…์„ ํฌํ•จํ•œ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •

- read() ๋ฉ”์„œ๋“œ

: 1 byte ์”ฉ ์ฝ์–ด์„œ int ํƒ€์ž…์œผ๋กœ ๋ฆฌํ„ด, ๋”์ด์ƒ ์ฝ์„ ๋‚ด์šฉ์ด ์—†์„ ๊ฒฝ์šฐ -1์„ ๋ฐ˜ํ™˜ํ•˜์—ฌ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ์Œ

: ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”์ดํŠธ ํƒ€์ž…์œผ๋กœ ์ฝ์–ด์˜ค๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ž๋ฅผ ์ถœ๋ ฅํ•  ๊ฒฝ์šฐ ํ˜• ๋ณ€ํ™˜ํ•˜์—ฌ ์ถœ๋ ฅ

: ๋ชจ๋“  ์ž…์ถœ๋ ฅ ๊ธฐ๋Šฅ์€ CheckException์„ ๋”ฐ๋ผ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ์–ด์•ผํ•จ

: 1byte ์”ฉ ์ฝ๊ธฐ์— ์†๋„๊ฐ€ ๋А๋ฆฌ๋‹ค๋Š” ๋‹จ์ 

 

-read(byte[] b) ๋ฉ”์„œ๋“œ

: ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฐ์—ด์— ๋‹ด์•„์„œ ์ฝ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ํšŸ์ˆ˜๊ฐ€ ์ค„์–ด๋“ฌ → ์ฝ๋Š” ์†๋„ ํ–ฅ์ƒ ๊ฐ€๋Šฅ

 

: byte ๊ธฐ๋ฐ˜ ์ž…๋ ฅ ์ŠคํŠธ๋ง๋ฏ€๋กœ ํŒŒ์ผ์„ read() ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ฝ์œผ๋ฉด ํ•œ๊ธ€์˜ ๊ฒฝ์šฐ ๊นจ์ง ํ˜„์ƒ์ด ์ผ์–ด๋‚จ

→ ๋‹ค์‹œ ๋ฌธ์žํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ• ๋•Œ ์ •์ƒ์ ์œผ๋กœ ๋ณ€ํ™˜๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ

 

OutputStream : ๋ฐ”์ดํŠธ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ

: ์ตœ์ƒ์œ„ ํด๋ž˜์Šค๋กœ OutputStream ๊ฐ์ฒด๊ฐ€ ์ œ๊ณต

 

FileOutputStream

: ์„ ์–ธ ๋ฐฉ๋ฒ•

new FileOutputStream(๊ฒฝ๋กœ/ํŒŒ์ผ๋ช…, ์ด์–ด์“ฐ๊ธฐ ์˜ต์…˜);
// ์ด์–ด์“ฐ๊ธฐ ์˜ต์…˜์ด true → ๊ธฐ์กด ํŒŒ์ผ์— ์ด์–ด์„œ ๋‚ด์šฉ ์ถ”๊ฐ€
// ์ด์–ด์“ฐ๊ธฐ ์˜ต์…˜์ด false → ๊ธฐ์กด ๋‚ด์šฉ์„ ๋ฌด์‹œํ•˜๊ณ  ์ƒˆ๋กœ ์“ฐ๊ธฐ

- wrtie(int b) ๋ฉ”์„œ๋“œ

: ๋‹จ์ผ ๋ฐ์ดํ„ฐ๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์•„์„œ ์ถœ๋ ฅ ๋Œ€์ƒ์— ์”€

 

- wrtie(byte[] b) ๋ฉ”์„œ๋“œ

: String ๊ฐ์ฒด๋Š” ๋ฐ”์ดํŠธ ๋ฐฐ์—ด ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ ๊ฐ€๋Šฅ

 

#4 ๋ฌธ์ž ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ

: ๋ฌธ์ž๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” charํ˜•์˜ ํฌ๊ธฐ๋Š” 2byte๋กœ ๋ณ„๋„์˜ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ์•Š์œผ๋ฉด ์ •์ƒ์ ์œผ๋กœ ์ฝ์ง€ ๋ชปํ•จ → ๋ฌธ์ž ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ์„ ํ™œ์šฉํ•ด ์ฒ˜๋ฆฌ

 

Reader : ๋ฌธ์ž ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ

: ์ตœ์ƒ์œ„ ํด๋ž˜์Šค์ธ Reader๋ฅผ ์ƒ์†ํ•ด ๋‹ค์–‘ํ•œ ํด๋ž˜์Šค๋ฅผ ์ œ๊ณต

 

FileReader

- read() ๋ฉ”์„œ๋“œ

: ๋ฌธ์ž ๋‹จ์œ„๋กœ ์ฝ์–ด์„œ intํ˜•์œผ๋กœ ๋ฐ˜ํ™˜ → ํ•œ๊ธ€์ด ๊นจ์ง€์ง€ ์•Š๊ณ  ์ถœ๋ ฅ

 

- read(char[] cbuf) ๋ฉ”์„œ๋“œ

: byte ๋ฐฐ์—ด์ด ์•„๋‹Œ char ๋ฐฐ์—ด์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉ → ๋ฐฐ์—ด ๋‹จ์œ„๋กœ ๋ฌธ์ž๋ฅผ ์ฝ๊ธฐ ๋•Œ๋ฌธ์— ์ฝ๋Š” ํšŸ์ˆ˜๊ฐ€ ํ˜„์ €ํžˆ ์ค„์–ด๋“ค์–ด ์†๋„์—์„œ ํšจ์œจ์„ฑ

 

Writer : ๋ฌธ์ž ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ

 

FileWriter ์„ ์–ธ

new FileWriter(๊ฒฝ๋กœ/ํŒŒ์ผ๋ช…, ์ด์–ด์“ฐ๊ธฐ ์˜ต์…˜);

 

- wrtie(char cbuf) ๋ฉ”์„œ๋“œ

: ๋‹จ์ผ ๋ฌธ์ž๋ฅผ ์ž…๋ ฅ ๋ฐ›์•„ ์ถœ๋ ฅํ•˜๋Š” ๋ฉ”์„œ๋“œ

: ํ•œ ๋ฌธ์žฅ์”ฉ ์ฝ์–ด ๋“ค์—ฌ์„œ ์ง€์ •๋œ ํŒŒ์ผ์— ๋‚ด์šฉ์„ ์ž…๋ ฅ

 

#5 ๋ณด์กฐ ์ŠคํŠธ๋ฆผ

- ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ : ๋Œ€์ƒ์— ์ง์ ‘ ์ž๋ฃŒ๋ฅผ ์ฝ๊ณ  ์“ฐ๋Š” ์ŠคํŠธ๋ฆผ

- ๋ณด์กฐ ์ŠคํŠธ๋ฆผ : ์ง์ ‘ ์ฝ๊ณ  ์“ฐ๋Š” ๊ธฐ๋Šฅ ์—†์ด ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ์— ์ถ”๊ฐ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ŠคํŠธ๋ฆผ

→ ๋ณด์กฐ ์ŠคํŠธ๋ฆผ์€ ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„์ˆ˜๋Š” ์—†์Œ

์ŠคํŠธ๋ฆผ์˜ ๊ธฐ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด์ฃผ๋Š” ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋‹ค๋ฅธ ๋ณด์กฐ ์ŠคํŠธ๋ฆผ๊ณผ ์ค‘์ฒฉํ•˜์—ฌ ์‚ฌ์šฉ

 

๋ณด์กฐ ์ŠคํŠธ๋ฆผ ์—ฐ๊ฒฐํ•˜๊ธฐ

: ๋ณด์กฐ ์ŠคํŠธ๋ฆผ์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›๋Š” ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ์ด ๋จผ์ € ์„ ์–ธ๋˜์–ด์•ผ ํ•จ

: ์Šค์Šค๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์“ธ ์ˆ˜ ์—†๊ธฐ์— ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ์ด ํ•„์š”

๋ณด์กฐ ์ŠคํŠธ๋ฆผ ๋ณ€์ˆ˜๋ช… = new ๋ณด์กฐ์ŠคํŠธ๋ฆผ(๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ);

 

์„ฑ๋Šฅ ํ–ฅ์ƒ ๋ณด์กฐ ์ŠคํŠธ๋ฆผ

: ๋ณด์กฐ ์ŠคํŠธ๋ฆผ ์ค‘์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ๋ฅผ ์ถ”๊ฐ€๋กœ ์ œ๊ณตํ•˜์—ฌ ์ŠคํŠธ๋ฆผ์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ ์‹œํ‚ค๋Š” ๊ฒƒ๋“ค์ด ์žˆ์Œ

→ byte ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ : BufferedInputStream & BefferedOutputStream

→ char ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ : BufferedReader & BufferdWriter

 

BufferedInputStream

: byte ๊ธฐ๋ฐ˜ InputStream์— ์—ฐ๊ฒฐ๋˜์–ด ๋ฒ„ํผ ์ œ๊ณต

→ ๋ฒ„ํผ์— ์ €์žฅํ•ด๋‘์—ˆ๋‹ค๊ฐ€ ํฐ ๋‹จ์œ„๋กœ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ํ–ฅ์ƒ

BefferedOutputStream

: byte ๊ธฐ๋ฐ˜ OutputStream์— ์—ฐ๊ฒฐ๋˜์–ด ๋ฒ„ํผ ์ œ๊ณต

: ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ „์†กํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ด๋ถ€ ๋ฒ„ํผ์— ์Œ“์•„๋‘์—ˆ๋‹ค๊ฐ€ ๊ฝ‰ ์ฐจ๋ฉด ํ•œ๋ฒˆ์— ์ „์†ก

 

ํ”„๋กœ๊ทธ๋žจ์˜ ์ž…์žฅ  ๋ฒ„ํผ๋ฅผ ํ†ตํ•ด ํ•œ๊บผ๋ฒˆ์— ์ „์†กํ•จ์œผ๋กœ์จ ์ž…์ถœ๋ ฅ ํšŸ์ˆ˜๋ฅผ ์ค„์—ฌ ์‹คํ–‰ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜๋Š” ํšจ๊ณผ

 

๋ณด์กฐ ์ŠคํŠธ๋ฆผ์˜ ์‚ฌ์šฉ

: ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑ์ž์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํ•˜์—ฌ ์„ ์–ธ

InputStream in = new ...
BufferdInputStream bis = new BufferdInputStream (in);

 

BufferedReader

→ ๋ฌธ์ž ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ์ธ Reader์— ์—ฐ๊ฒฐ

BufferdWriter

→ Writer์— ์—ฐ๊ฒฐ

 

 

๋ฌธ์ž ๋ณ€ํ™˜ ๋ณด์กฐ ์ŠคํŠธ๋ฆผ

: ๋ฐ”์ดํŠธ ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ → ํ…์ŠคํŠธ ํŒŒ์ผ์„ ์ฝ๊ฑฐ๋‚˜ ์“ธ ๊ฒฝ์šฐ, ํ•œ๊ธ€์„ ํฌํ•จํ•œ ๋น„์˜์–ด๊ถŒ ๋ฌธ์ž๋“ค์ด ์ •์ƒ์ ์œผ๋กœ ์ถœ๋ ฅ X

: Reader์™€ Writer ๋Š” ๋ฌธ์ž ๋‹จ์œ„๋กœ ์ž…์ถœ๋ ฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ”์ดํŠธ ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ๋ณด๋‹ค ๋‹ค์–‘ํ•œ ๋ฌธ์ž๋ฅผ ์ž…์ถœ๋ ฅ

: InputStreamReader์™€ OutputStreamWriter๊ฐ€ ์žˆ์Œ

 

InputStreamReader

: ๋ฐ”์ดํŠธ ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ InputStream์„ ๋ฌธ์ž ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ Reader๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ณด์กฐ ์ŠคํŠธ๋ฆผ

OutputStreamWrtier

: ๋ฐ”์ดํŠธ ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ OutputStream์„ ๋ฌธ์ž ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ Writer๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ณด์กฐ ์ŠคํŠธ๋ฆผ

 

#6 File ํด๋ž˜์Šค

 

ํŒŒ์ผ ๊ฐ์ฒด ์„ ์–ธ

: ์ƒ์„ฑ์ž์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ๋ฐ›์Œ

File file = new File("C:\\files\\example.txt");

: ํŒŒ์ผ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค๊ณ  ํ•ด์„œ ์‹ค์ œ ํด๋”๋‚˜ ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹˜

: ์ง€์ •ํ•œ ๊ฒฝ๋กœ์— ํŒŒ์ผ์ด ์—†์–ด๋„ ์ƒ์„ฑ ์‹œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€๋Š” ์•Š์Œ

→ File ๊ฐ์ฒด๋Š” ์ง€์ •ํ•œ ๊ฒฝ๋กœ์˜ ํŒŒ์ผ ๋˜๋Š” ํด๋”๋ฅผ ๊ฐ์ฒดํ™” ํ•˜๊ฑฐ๋‚˜ ์ง€์ •๋œ ํŒŒ์ผ์ด๋‚˜ ํด๋”๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ• ๋•Œ ๋ชจ๋‘ ์‚ฌ์šฉ

 

#7 ์ง๋ ฌํ™”

: ์ž๋ฐ” ์‹œ์Šคํ…œ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์™ธ๋ถ€์˜ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฐ”์ดํŠธ ๋‹จ์œ„์˜ ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜์‹œํ‚ค๋Š” ๊ธฐ์ˆ 

: ํด๋ž˜์Šค ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ๋ณ€ํ™˜

์—ญ์ง๋ ฌํ™” : ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ๋ณ€ํ™˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๊ฐ์ฒด ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ

 

๊ฐ์ฒด์˜ ์ง๋ ฌํ™”

: ์ง๋ ฌํ™” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € ์‚ฌ์šฉํ•  ๊ฐ์ฒด๋ฅผ ์ค€๋น„

: ์‚ฌ์šฉํ•  ๊ฐ์ฒด์— java.io.Serializable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•˜์—ฌ ์ง๋ ฌํ™”๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๋กœ ๋งŒ๋“ค๊ธฐ

 

serialVersionUID

: ํ•ด๋‹น ๊ฐ’์€ ๊ฐ์ฒด๋ฅผ ์ง๋ ฌํ™” ๋˜๋Š” ์—ญ์ง๋ ฌํ™” ํ•  ๋•Œ ์„œ๋กœ ๊ฐ’์ด ๋งž๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ๊ธฐ์ค€์ด ๋˜๋Š” ๊ฐ’

→ ์ง๋ ฌํ™” ๊ณผ์ •์—์„œ ํ•ด๋‹น ๊ฐ’์ด ๋ณ€๊ฒฝ๋œ๋‹ค๋ฉด? InvalidClassException ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒ

→ ํ•ด๋‹น ๊ฐ’์€ ํ•„์ˆ˜ ๊ฐ’์ด ์•„๋‹ˆ๊ธฐ์— ์ง€์ •ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ํด๋ž˜์Šค์˜ ํ•ด์‹œ ๊ฐ’ ์‚ฌ์šฉ

 

ObjectInputStream & ObjectOutputStream

: ์ƒ์†ํ•œ ๊ฐ์ฒด๋ฅผ ์ง๋ ฌํ™”ํ•˜์—ฌ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด

ObjectInputStream : ์—ญ์ง๋ ฌํ™”, ๊ฐ์ฒด๋ฅผ ์ฝ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

ObjectOutputStream : ์ง๋ ฌํ™”, ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

 

๊ฐ์ฒด๋ฅผ ์ง๋ ฌํ™”ํ•˜์—ฌ ์ €์žฅํ•  ๊ฒฝ์šฐ, text ํ˜•ํƒœ๊ฐ€ ์•„๋‹Œ ๊ฐ์ฒด ์ž์ฒด๋ฅผ ๋ฐ์ดํ„ฐํ™” → ํŒŒ์ผ์„ ์—ด์–ด๋„ ๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์—†์Œ

์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ†ตํ•ด ObjectInputStream์„ ์ด์šฉํ•ด ์—ญ์ง๋ ฌํ™” ํ•˜์—ฌ ์ฝ๊ธฐ