๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ๏ธ ๋ฐฑ์—”๋“œ/Java

[ch.15] ์ž…์ถœ๋ ฅ I/O - ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ

by OR15A 2023. 11. 21.

๋ฐ”์ดํŠธ ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ

 

 

ByteArray I/O
  • ๋ฐ”์ดํŠธ ๋ฐฐ์—ด์— ๋ฐ์ดํ„ฐ๋ฅผ ์ž…์ถœ๋ ฅํ•˜๋Š”๋ฐ  ์‚ฌ์šฉํ•˜๋Š” ์ŠคํŠธ๋ฆผ.
  • ์ฃผ๋กœ ๋‹ค๋ฅธ ๊ณณ์— ์ž…์ถœ๋ ฅ ํ•˜๊ธฐ ์ „์— ์ž„์‹œ๋กœ ๋ฐ”์ดํŠธ ๋ฐฐ์—ด์— ๋‹ด์•„์„œ ๋ณ€ํ™˜ํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์— ์‚ฌ์šฉํ•จ.
  • ์‚ฌ์šฉํ•˜๋Š” ์ž์›์€ ์˜ค์ง ๋ฉ”๋ชจ๋ฆฌ์ž„. GC์— ์˜ํ•ด์„œ ์ž๋™์ ์œผ๋กœ ์ž์›์ด ๋ฐ˜ํ™˜๋˜๋ฏ€๋กœ close()์‚ฌ์šฉ X.
  • ํ•œ๋ฒˆ์— 1byte ์ฝ๊ณ ์“ฐ๊ธฐ๋งŒ ํ•ด์„œ ์ž‘์—…ํšจ์œจ์ด ๋–จ์–ด์ง.
  • “๋ฐฐ์—ด”์ด์šฉ์‹œ ์ž…์ถœ๋ ฅ ์ž‘์—…ํšจ์œจ์ด ๋†’์•„์ง.
  • read( )๋‚˜ write( )๊ฐ€ IOException์„ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— try-catch๋ฌธ์œผ๋กœ ๊ฐ์‹ธ์คŒ.
  • available( ): ํ•ด๋‹น ์Šคํฌ๋ฆผ์—์„œ ์ฝ์–ด์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ฐ”์ดํŠธ์˜ ์ˆ˜๋ฅผ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ์Œ. ์ •ํ™•ํ•œ๊ฐ’์€ X.

 

File I/O
  • ํŒŒ์ผ์— ์ž…์ถœ๋ ฅ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์ŠคํŠธ๋ฆผ.
  • ์‹ค์ œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋งŽ์ด ์‚ฌ์šฉํ•จ.
  • ํ…์ŠคํŠธํŒŒ์ผ์€ ๋ฌธ์ž๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆผ์„ ์ด์šฉํ•˜๊ธฐ.

 

๋ฐ”์ดํŠธ ๊ธฐ๋ฐ˜ ๋ณด์กฐ์ŠคํŠธ๋ฆผ

Filter I/O
  • ๋ชจ๋“  ๋ณด์กฐ์ŠคํŠธ๋ฆผ์˜ ์กฐ์ƒ(SequenceInputStream์ œ์™ธ)
  • ๋ณด์กฐ์ŠคํŠธ๋ฆผ์€ ์ž์ฒด์ ์œผ๋กœ ์ž…์ถœ๋ ฅX, ๊ธฐ๋ฐ˜์ŠคํŠธ๋ฆผํ•„์š”.
  • Filter I/O์˜ ๋ชจ๋“  ๋ฉ”์„œ๋“œ๋Š” ๋‹จ์ˆœํžˆ ๊ธฐ๋ฐ˜์ŠคํŠธ๋ฆผ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ํ˜ธ์ถœํ•  ๋ฟ. ์ƒ์†์„ ํ†ตํ•ด ์›ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•ด์•ผํ•จ.
  • Filter I/O์˜ ์ƒ์„ฑ์ž 
    • protected  FilterInputStream(InputStream in)
    • public  FilterOutputStream(OutputStream out)
  • ์ƒ์„ฑ์ž์˜ ์ œ์–ด์ž protected: ์ž์ฒด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์ง€X. ์ƒ์†์„ ํ†ตํ•ด ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•ด์•ผํ•จ.

 

Buffered I/O
  • ์ŠคํŠธ๋ฆผ์˜ ์ž…์ถœ๋ ฅํšจ์œจ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ŠคํŠธ๋ฆผ. 1byte <<< ๋ฒ„ํผ(๋ฐ”์ดํŠธ๋ฐฐ์—ด)
    • ํšจ์œจ์ ์ด๊ณ  ๋นจ๋ผ์„œ ๋Œ€๋ถ€๋ถ„์˜ ์ž…์ถœ๋ ฅ์— ์‚ฌ์šฉ
  • ๋ฒ„ํผ์˜ ํฌ๊ธฐ๋Š” ์ž…๋ ฅ์†Œ์Šค๋กœ๋ถ€ํ„ฐ ํ•œ๋ฒˆ์— ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๋กœ ์ง€์ •ํ•˜๋ฉด ์ข‹์Œ.

 

 

Data I/O
  • Filter I/O์˜ ์ž์†
  • DataInput์ธํ„ฐํŽ˜์ด์Šค,DataOutput์ธํ„ฐํŽ˜์ด์Šค๊ตฌํ˜„
    • ๋ฐ์ดํ„ฐ ์ฝ/์“ฐ์— 8๊ฐ€์ง€ ๊ธฐ๋ณธ์ž๋ฃŒํ˜•์˜ ๋‹จ์œ„๋กœ ๊ฐ€๋Šฅ
  • DataOutPutStream์ด ์ถœ๋ ฅํ•˜๋Š” ํ˜•์‹์€ ๊ฐ ๊ธฐ๋ณธํ˜• ๊ฐ’์„ 16์ง„์ˆ˜๋กœ ํ‘œํ˜„ํ•˜์—ฌ ์ €์žฅํ•จ. ๊ฐ ์ž๋ฃŒํ˜•์˜ ํฌ๊ธฐ๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ถœ๋ ฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ์ฝ์–ด์˜ฌ ๋•Œ ์ถœ๋ ฅ์‹œ์˜ ์ˆœ์„œ๋ฅผ ์—ผ๋‘ํ•ด์•ผํ•จ.
  • ์—ฌ๋Ÿฌ ์ข…๋ฅ˜ ์ž๋ฃŒํ˜• ์ถœ๋ ฅ์‹œ ์ฝ์„ ๋•Œ ๋ฐ˜๋“œ์‹œ ์“ฐ์ธ ์ˆœ์„œ๋Œ€๋กœ ํ•ด์•ผํ•จ.

 

Sequence InputStream
  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž…๋ ฅ์ŠคํŠธ๋ฆผ์„ ์—ฐ์†์ ์œผ๋กœ ์—ฐ๊ฒฐํ•ด์„œ ํ•˜๋‚˜์˜ ์ŠคํŠธ๋ฆผ์œผ๋กœ๋ถ™ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š”๊ฒƒ๊ฐ™์ด ์ฒ˜๋ฆฌํ• ์ˆ˜์žˆ์Œ.
  • ํฐํŒŒ์ผ→์—ฌ๋Ÿฌ๊ฐœ ์ž‘์€ํŒŒ์ผ→ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ํ•ฉ์น˜๊ธฐ ์™€ ๊ฐ™์€ ์ž‘์—… ์ˆ˜ํ–‰์— ์ข‹์Œ.
  • โ‘ Vector์— ์—ฐ๊ฒฐํ•  ์ž…๋ ฅ์ŠคํŠธ๋ฆผ๋“ค ์ €์žฅ.  โ‘กVector์˜ Enummeration element( )ํ˜ธ์ถœํ•ด์„œ ์ƒ์„ฑ์ž์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•จ. 
  • or
  • โ‘ ์ƒ์„ฑ์ž์— ํŒŒ์ผ์ŠคํŠธ๋ฆผ์„ ์—ฌ๋Ÿฌ๊ฐœ ๋„ฃ๊ธฐ
  • Vector์— ์ €์žฅ๋œ ์ˆœ์„œ๋Œ€๋กœ ์ž…๋ ฅ๋จ.

 

PrintStream
  • ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์ŠคํŠธ๋ฆผ์— ๋‹ค์–‘ํ•œ ํ˜•ํƒœ๋กœ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” print, println, printf ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•˜์—ฌ์„œ ์ œ๊ณตํ•จ.
  • ๋ฐ์ดํ„ฐ๋ฅผ ์ ์ ˆํ•œ ๋ฌธ์ž๋กœ ์ถœ๋ ฅํ•จ. (๊ทธ๋Ÿฌ๋‚˜ PrintWriter์ด ์žˆ๋Š”๋ฐ ๊ตณ์ด...?)
  • println( )์ด๋‚˜ print( )๋Š” ์˜ˆ์™ธ๋ฅผ ๋˜์ง€์ง€์•Š๊ณ  ๋‚ด๋ถ€์—์„œ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์ •์˜ํ•จ(์ž์ฃผ ์‚ฌ์šฉํ•ด์„œ) (System.out, System.err์ด ์ด๊ฒƒ์ž„)
    • BufferedInputStream - ๋ฒ„ํผ๊ธฐ๋Šฅ์ œ๊ณต
    • DataInputStream - ๊ธฐ๋ณธํ˜•๋‹จ์œ„๋กœ I/O
    • ObjectInputStream - ๊ฐ์ฒด๋‹จ์œ„๋กœ I/O