JAVA IO

JAVA IO

java์—์„œ Scanner๋ฅผ ์จ๋ดฃ์„ ๊ฒƒ์ด๋‹ค Scanner๋„ ์‚ฌ์šฉ์ž๊ฐ€ data๋ฅผ ์ž…๋ ฅํ•˜๋Š” util์ค‘ ํ•˜๋‚˜์ด๋‹ค.

//Scanner
Scanner scanner = new Scanner(System.in);

์œ„์™€ ๊ฐ™์ด ์‚ฌ์šฉ ํ•˜๋Š”๋ฐ ์—ฌ๊ธฐ์— System . in์˜ in์„ ๋ณด๋ฉด data type๋กœ inputstream์„ ๋ฐ›๋Š”๋‹ค.
inputstream์€ java I / O ํŒจํ‚ค์ง€์— ์ž…๋ ฅ์„ ๋‹ด๋‹นํ•˜๋Š” ์ถ”์ƒ ํด๋ž˜์Šค์ด๋‹ค.
๋˜ ์˜ˆ๋ฅผ ๋“ค์–ด out์„ ๋ณด๋ฉด outStream์ด๋ผ๋Š” data type์„ ๋ฐ›๋Š”๋ฐ ์ด๊ฒƒ ๋˜ํ•œ I / O ํŒจํ‚ค์ง€์— ์ถœ๋ ฅ์„ ๋‹ด๋‹นํ•˜๋Š” ์ถ”์ƒํด๋ž˜์Šค์ด๋‹ค.
๊ฒฐ๊ตญ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์€ java I / O ํŒจํ‚ค์ง€์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

I / O ์—๋Š” ์ž…๋ ฅ์œผ๋กœ InputStream๊ณผ Reader๊ฐ€ ์žˆ์œผ๋ฉฐ ์ถ”์ƒmethod๋กœ read()๊ฐ€ ์กด์žฌํ•œ๋‹ค.
์ด๊ฒƒ์œผ๋กœ ๋ณด์•„ InputStream๊ณผ Reader๋ฅผ ์ƒ์†๋ฐ›๋Š” ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ๋Š” ๋ชจ๋‘ read()๋ฅผ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ถœ๋ ฅ์œผ๋กœ OutStream ๊ณผ writer๊ฐ€ ์žˆ๋Š”๋ฐ ๋งˆ์ฐฌ๊ฐ€์ง€๊ณ  ์ถ”์ƒ method์ธ write()๊ฐ€ ์กด์žฌํ•œ๋‹ค.
InputSteam๊ณผ ๊ฐ™์ด ์ƒ์†๋ฐ›๋Š” ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ๋Š” ๋ชจ๋‘ ์ถ”์ƒ method write() ๊ฐ€ ์กด์žฌํ•œ๋‹ค.

read()์™€ write()๋ฅผ ๊ณต์œ ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ๋ณด๋ฉด InputStream๊ณผ Reader / OutStream ๊ณผ writer๋ฅผ ํฌํ•จํ•œ
๋ชจ๋“  ๊ฒƒ์€ read()์™€ write()๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๋ฐ”์ดํŠธ ๋‹จ์œ„ ์ž…์ถœ๋ ฅ์ธ InputStream๊ณผ OutStream์€ 1 byte(์•„์Šคํ‚ค์ฝ”๋“œ๋กœ)์˜ data๋ฅผ ์ถœ๋ ฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๋ฌธ์ž(char) ๋‹จ์œ„ ์ž…์ถœ๋ ฅ์ธ Reader์™€ writer๋Š” ๋ฌธ์ž์—ด(์œ ๋‹ˆ์ฝ”๋“œ)๋กœ data๋ฅผ ์ถœ๋ ฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ด๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด inputStreamReader ์™€ outputStreamWrite๋ฅผ ์ง€์›ํ•œ๋‹ค.

์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”์ดํŠธ๋กœ ๋ฐ›์•„ inputStreamReader ํ†ตํ•ด ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๊ณ 
์ถœ๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ฐ›์•„ outputStreamWrite ํ†ตํ•ด ๋ฐ”์ดํŠธ๋กœ ์ถœ๋ ฅํ•˜๊ฒŒ ๋ณ€ํ™˜ํ•ด์ค€๋‹ค.

์‰ฝ๊ฒŒ ๋งํ•˜์ž๋ฉด ์ƒ์„ฑ์ž๋ฅผ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋Š”๋ฐ stream์€ byte์˜ ๋ฐ”์ดํŠธ์ŠคํŠธ๋ฆผ์ด๊ณ 
reader or writer๊ฐ€ ๋ถ™์œผ๋ฉด ๋ฌธ์ž์—ด ์ŠคํŠธ๋ฆผ์ด๋‹ค.


Stream(์ŠคํŠธ๋ฆผ)

์ž๋ฐ”์—์„œ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ž…์ถœ๋ ฅ์„ ์ง์ ‘ ๋‹ค๋ฃจ์ง€ ์•Š๊ณ  ์ŠคํŠธ๋ฆผ์ด๋ผ๋Š” ํ๋ฆ„์„ ํ†ตํ•ด ๋‹ค๋ฃฌ๋‹ค.
์ŠคํŠธ๋ฆผ์€ ์—ฐ์†๋œ ๋ฐ์ดํ„ฐ์˜ ๋‹จ๋ฐฉํ–ฅ ํ๋ฆ„์„ ์ถ”์ƒํ™”ํ•œ ๊ฒƒ์ด๋‹ค.
๋„คํŠธ์›Œํฌ ํ†ต์‹ , ์ž…์ถœ๋ ฅ ์žฅ์น˜์˜ ์ž…์ถœ๋ ฅ, ํŒŒ์ผ์˜ ์ž…์ถœ๋ ฅ ๋“ฑ์˜ ์ฒ˜๋ฆฌ์—์„œ ๋ฐœ์ƒํ•˜๋Š”
๋ฐ์ดํ„ฐ ํ๋ฆ„๋„ ๋ชจ๋‘ ์ŠคํŠธ๋ฆผ์ด๋ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ž…์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์€ ์„ ์ž…์„ ์ถœ ๊ตฌ์กฐ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ŠคํŠธ๋ฆผ ์† ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ๋Š” ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค.
๊ทธ๋ ‡๊ธฐ ๋–„๋ฌธ์— ๋ฐ์ดํ„ฐ ๊ตํ™˜์„ ์œ„ํ•ด์„œ ์ž…๋ ฅ์ŠคํŠธ๋ฆผ๊ณผ ์ถœ๋ ฅ์ŠคํŠธ๋ฆผ์ด ๋”ฐ๋กœ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.


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

์ž์ฒด์ ์ธ ์ž…์ถœ๋ ฅ์„ ํ•  ์ˆ˜ ์—†๊ณ  ๋ง ๊ทธ๋Œ€๋กœ ๋ณด์กฐ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ์ŠคํŠธ๋ฆผ์ด๋‹ค.
๋‹ค๋ฅธ๋ง๋กœ ์ŠคํŠธ๋ฆผ์„ ๊ฐ์‹ธ๊ณ  ์žˆ๋‹ค๋Š” ๋œป์—์„œ Wrapper stream์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค.

๋ณด์กฐ์ŠคํŠธ๋ฆผ์œผ๋กœ ๊ธฐ๋Šฅ์„ ํ™•์žฅ ํ•  ์ˆ˜ ์žˆ๋‹ค.
ํ•„์š”์— ๋”ฐ๋ผ API๋ฅผ ํ™•์ธํ•ด๋ณด์ž


Buffer

Buffer๋ž€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด ๋‘๋Š” ๊ณต๊ฐ„์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ํŽธํ•˜๋‹ค.
5๊ฐœ์˜ ๋ฐ์ดํ„ฐ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๋Š” A์™€ B๊ฐ€ ์žˆ๋‹ค A์— 5๊ฐœ์˜ ๋ฒ„ํผ ๊ณต๊ฐ„์ด ๊ฝ‰ ์ฐจ๋ฉด ์ž๋™์œผ๋กœ B์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š”๋ฐ ์ด๊ฒƒ์„

flush = AutoFlush๋ผ๊ณ  ํ•œ๋‹ค.

๊ผญ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฝ‰ ์ฐจ์ง€ ์•Š์•„๋„ ๊ฐ•์ œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
์ด๋ ‡๊ฒŒ ๋˜๋ฉด B๋Š” 5๊ฐœ์˜ ๋ฐ์ดํ„ฐ ๊ณต๊ฐ„์ด ๊ฝ‰์ฐจ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ด๋ณด๋‚ด์ง€ ์•Š์œผ๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์ ์žฌํ•  ์ˆ˜ ์—†๋‹ค.
์ด๋•Œ A์—์„œ 2๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€์ ์œผ๋กœ ๋ณด๋‚ด๊ฒŒ ๋œ๋‹ค๋ฉด 5๊ฐœ์˜ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒซ๋ฒˆ์งธ์™€ ๋‘๋ฒˆ์งธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ›„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๊ฒŒ๋œ๋‹ค.

#์žฅ์ ์œผ๋กœ ๊ฐ€๋ณ€์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

Categories:

Updated:

Leave a comment