๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Programming/Java

์ž๋ฐ”[Java] ์ž…์ถœ๋ ฅ Stream ์ดํ•ดํ•˜๊ธฐ

728x90
๋ฐ˜์‘ํ˜•

โ–ถInputStream / Sytem.in.read()

ImputStream์€ ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

 

์‚ฌ์šฉ์ž ์ž…๋ ฅ์— ์ž์ฃผ ์“ฐ์ด๋Š” ํด๋ž˜์Šค์ธ Scanner์™€ ๋‹ค๋ฅธ ๋™์ž‘์„ ๋ณด์ด๋Š”๋ฐ, ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ 1byte ๋‹จ์œ„๋กœ ์ž…๋ ฅ์„ ๋ฐ›์•„์˜จ๋‹ค๋Š” ์ ์ด๋‹ค.

 

Sytem.in.read()์€ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ์ž„์‹œ ์ €์žฅํ•˜๋Š” ๋ฒ„ํผ(Buffer)์—์„œ ์ €์žฅ๋œ ๊ฐ’์„ ํ•˜๋‚˜์”ฉ ๊ฐ€์ ธ์˜จ๋‹ค.

 

์ด read()์˜ return ๊ฐ’์€ byte๋‹จ์œ„์˜ ๋ฐ์ดํ„ฐ ํ˜น์€ -1(๋ฒ„ํผ์— ๊ฐ’์ด ์—†์„ ๋•Œ)์ด๋‹ค.

โ–ถ์•„์Šคํ‚ค์ฝ”๋“œ ๊ฐ’์œผ๋กœ ์ €์žฅ

read() ๋ฉ”์„œ๋“œ๋กœ ๋ฆฌํ„ดํ•œ ๊ฐ’์„ ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๊ฒŒ ๋  ํ…๋ฐ, ์ด๋•Œ ์‚ฌ์šฉ์ž ์ž…๋ ฅ ๊ฐ’์„ ๋ฆฌํ„ด ๊ฐ’์ธ byte๋‹จ์œ„(0~255)์— ๋งž์ถ”์–ด ์•„์Šคํ‚ค์ฝ”๋“œ ๊ฐ’์„ ์ €์žฅํ•˜๊ฒŒ ๋œ๋‹ค.

๋ณ€์ˆ˜ a์— ์‚ฌ์šฉ์ž ์ž…๋ ฅ a๋ฅผ ์ €์žฅ

๋ณ€์ˆ˜ a์— ์‚ฌ์šฉ์ž ์ž…๋ ฅ์œผ๋กœ ๋ฌธ์ž 'a'๋ฅผ ๋ฐ›์œผ๋ฉด ๋ฌธ์ž 'a'์˜ ์•„์Šคํ‚ค์ฝ”๋“œ ๊ฐ’์ด 97์ด a ๋ณ€์ˆ˜์— ์ €์žฅ๋œ๋‹ค.

โ–ถ๋ฒ„ํผ์˜ ๋™์ž‘ (\r, \n)

์‚ฌ์šฉ์ž ์ž…๋ ฅ์œผ๋กœ ๋ฌธ์ž 'a'๋ฅผ ๋ฐ›์•˜๋‹ค๊ณ  ํ•ด์„œ ๋ฒ„ํผ์— 'a'๋งŒ ์ €์žฅ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

 

์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ์™„๋ฃŒํ–ˆ์„ ๋•Œ, enter ํ‚ค๋ฅผ ๋ˆ„๋ฅด๊ฒŒ ๋˜๋Š”๋ฐ ๋ฒ„ํผ์—๋Š” ์ด enterํ‚ค๊ฐ€ ๊ฐ€์ง€๋Š” ๋ณต๊ท€ ๋ฌธ์ž(Carriage return, ASCII 13)์™€ ๊ฐœํ–‰ ๋ฌธ์ž(Line feed, ASCII 10)๊ฐ€ ํ•จ๊ป˜ ์ €์žฅ๋œ๋‹ค.

 

↓ a ์ž…๋ ฅ ์‹œ์— ๋ฒ„ํผ์˜ ์ƒํƒœ

๋ฌธ์ž a \r \n
ASCII 97 13 10

์—ฌ๊ธฐ์„œ int ๋ณ€์ˆ˜์—๋Š” ํ•˜๋‚˜์˜ ์ •์ˆ˜ ๊ฐ’๋งŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์œผ๋กœ ์ธํ•ด ๋ฒ„ํผ์— 3๊ฐœ์˜ ์ •์ˆ˜ ๊ฐ’์ด ๋‹ด๊ธด๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์€ 'a'๋ฌธ์ž๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” 3๊ฐœ์˜ int ๋ณ€์ˆ˜๊ฐ€ ํ•„์š”ํ•œ ์…ˆ์ด๋‹ค.

โ–ถPrintStream / ํ•œ๊ธ€ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ

read() ๋ฉ”์„œ๋“œ๋กœ 1byte์”ฉ ์ €์žฅ๋œ ๋ณ€์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•์€ System.in.write() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

System.in.write()๋Š” ๋ณ€์ˆ˜์— ์ €์žฅ๋œ 1byte์˜ ๊ฐ’์„ ์ฝ์–ด๋‚ธ๋‹ค.

 

read() ํ•จ์ˆ˜์—์„œ 'a'๋ผ๋Š” ๋ฌธ์ž๋Š” ๊ฐ๊ฐ 97 / 13 / 10 ์„ธ ๊ฐœ์˜ ๊ฐ’์˜ ํ•ฉ์œผ๋กœ ์ด๋ค„์ ธ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

๋ฐ˜๋Œ€๋กœ write() ํ•จ์ˆ˜๋กœ 'a'๋ผ๋Š” ๋ฌธ์ž๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” 97 / 13 / 10 ์„ธ ๊ฐœ์˜ ๊ฐ’์ด ๋ชจ์—ฌ์•ผ ํ•œ๋‹ค.

์ฝ”๋“œ
์ถœ๋ ฅ

์—ฌ๊ธฐ์„œ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์ด ํ•œ๊ธ€์ด๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋Š”๋ฐ, ํ•œ ์ค‘ ์ผ์–ด์˜ ์œ ๋‹ˆ์ฝ”๋“œ๋Š” ์ž๋ฐ”์—์„œ๋Š” 3byte์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์‚ฌ์šฉ์ž ์ž…๋ ฅ : 'ใ„ฑ'
์ถœ๋ ฅ

์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ 'ใ„ฑ'์œผ๋กœ ๋ฐ›์œผ๋ฉด ์ด 5๊ฐœ์˜ ๋ณ€์ˆ˜์— ์ €์žฅ์ด ๋˜๋Š”๋ฐ ์•ž์„œ ๋งํ•œ ํ•œ๊ธ€์ด 3byte์œผ๋กœ ์ด๋ค„์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

\r๊ณผ \n ๊ฐ’์„ ์ œ์™ธํ•˜๋ฉด ํ•œ๊ธ€ 'ใ„ฑ'์€ 227 / 132 / 177์˜ ํ•ฉ์œผ๋กœ ์ด๋ค„์ ธ ์žˆ๋Š” ๋ฌธ์ž์ด๋‹ค.

 

์œ„์™€ ๊ฐ™์ด ๋‹ค์„ฏ ๊ฐœ์˜ ๋ณ€์ˆ˜๋ฅผ write() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ์ถœ๋ ฅํ•˜๋ฉด ์ž…๋ ฅ ๊ฐ’ 'ใ„ฑ'์„ ์ œ๋Œ€๋กœ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.

์‚ฌ์šฉ์ž ์ž…๋ ฅ : 'ใ„ฑ'

 

์ถœ๋ ฅ

โ–ถwhile ๋ฌธ ์‚ฌ์šฉ

while๋ฌธ ์˜ˆ์‹œ

๋ณดํ†ต์€ while๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๋ฐ›๊ณ  ๊ฐ’์„ ์ถœ๋ ฅํ•ด์ค€๋‹ค.

 

์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๋ฐ›์„ ๋•Œ๋งˆ๋‹ค \r, \n์ด ํ•จ๊ป˜ ์ €์žฅ๋˜๋ฏ€๋กœ ๋Š˜ 2byte๊ฐ€ ์ถ”๊ฐ€๋กœ ์ €์žฅ๋œ๋‹ค.

 

์œ„์ฒ˜๋Ÿผ while๋ฌธ์„ ์ด์š”ํ•ด InputStream / OutStream์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์ž˜๋ชป๋œ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์œผ๋กœ ๋ฌดํ•œ ๋ฃจํ”„์— ๋น ์งˆ ์œ„ํ—˜์ด ๋†’๊ธฐ ๋•Œ๋ฌธ์— try / catch ๋ฌธ์„ ์ด์šฉํ•ด์„œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค€๋‹ค. (IDE์—์„œ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด์ค€๋‹ค.)

 


์ž˜๋ชป๋œ ๋ถ€๋ถ„ ์ง€์ ์€ ๋Š˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•