CodeGym/์ž๋ฐ” ์ฝ”์Šค/์ž๋ฐ” ์ฝ”์–ด/์ž…๋ ฅ/์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ

์ž…๋ ฅ/์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ

์‚ฌ์šฉ ๊ฐ€๋Šฅ

"์•ˆ๋…•ํ•˜์„ธ์š”, Amigo! ์˜ค๋Š˜ ์šฐ๋ฆฌ๋Š” ์ž…๋ ฅ/์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ ์— ๋Œ€ํ•ด ์•Œ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค . ์šฐ๋ฆฌ๋Š” ๋ฉฐ์น  ์ „์— ์ด ์ฃผ์ œ๋ฅผ ์„ ํƒํ–ˆ์ง€๋งŒ ์˜ค๋Š˜์€ ์ฒ ์ €ํžˆ ์‚ดํŽด๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ž…๋ ฅ/์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์€ 4๊ฐ€์ง€ ๋ฒ”์ฃผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค."

1) ์ŠคํŠธ๋ฆผ์€ ๋ฐฉํ–ฅ์— ๋”ฐ๋ผ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ ๊ณผ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

2) ์ŠคํŠธ๋ฆผ์€ ๋ฐ์ดํ„ฐ ์œ ํ˜•์— ๋”ฐ๋ผ ๋ฐ”์ดํŠธ ๋กœ ์ž‘๋™ํ•˜๋Š” ์ŠคํŠธ๋ฆผ๊ณผ ๋ฌธ์ž ๋กœ ์ž‘๋™ํ•˜๋Š” ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค .

์—ฌ๊ธฐ์—์„œ ์ด๋Ÿฌํ•œ ๊ตฌ๋ถ„์ด ํ‘œ์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์ž…๋ ฅ ์ŠคํŠธ๋ฆผ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ
๋ฐ”์ดํŠธ์™€ โ€‹โ€‹ํ•จ๊ป˜ ์ž‘๋™ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ
์บ๋ฆญํ„ฐ ์ž‘์—… ๋ฆฌ๋” ์ž‘๊ฐ€

๊ฐœ์ฒด๊ฐ€ InputStream ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ๊ฐœ์ฒด์—์„œ ๋ฐ”์ดํŠธ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฝ๋Š” ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ์ฒด๊ฐ€ OutputStream ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐ”์ดํŠธ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์“ฐ๋Š” ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ์ฒด๊ฐ€ Reader ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ๊ฐœ์ฒด์—์„œ ๋ฌธ์ž(๋ฌธ์ž)๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฝ๋Š” ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ์ฒด๊ฐ€ Writer ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐœ์ฒด์— ๋ฌธ์ž(๋ฌธ์ž)๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์“ฐ๋Š” ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ž…๋ ฅ/์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ - 1

์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์€ ํ”„๋ฆฐํ„ฐ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฌธ์„œ๋ฅผ ํ”„๋ฆฐํ„ฐ๋กœ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์œผ๋กœ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ๋ถ€๋ถ„์—์„œ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์€ ์Šค์บ๋„ˆ ๋˜๋Š” ์ „๊ธฐ ์ฝ˜์„ผํŠธ์™€ ๋น„๊ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šค์บ๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์„œ๋ฅผ ์ปดํ“จํ„ฐ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ์ „๊ธฐ ์ฝ˜์„ผํŠธ์— ์—ฐ๊ฒฐํ•˜์—ฌ ์ „๊ธฐ๋ฅผ ๊ณต๊ธ‰๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

"๊ทธ๋“ค์€ ์–ด๋””์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๊นŒ?"

" ์ด ํด๋ž˜์Šค๋Š” Java์˜ ๋ชจ๋“  ๊ณณ์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์นœ์ˆ™ํ•œ ์นœ๊ตฌ์ธ System.in์€ System ํด๋ž˜์Šค์— ์ด๋ฆ„ ์ด ์ง€์ •๋œ ์ •์  InputStream ๋ณ€์ˆ˜ ์ž…๋‹ˆ๋‹ค ."

"์ง„์‹ฌ์ด์•ผ?! ๊ทธ๋ž˜์„œ ์ง€๊ธˆ๊นŒ์ง€ ๋‚˜๋Š” InputStream์„ ์‚ฌ์šฉํ•ด ์™”์ง€๋งŒ ๊นจ๋‹ซ์ง€๋„ ๋ชปํ–ˆ๋‹ค. System.out๋„ ์ŠคํŠธ๋ฆผ์ธ๊ฐ€?"

"์˜ˆ, System.out์€ System ํด๋ž˜์Šค์˜ ์ •์  PrintStream ( OutputStream ์˜ ์ž์† ) ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค."

"๋‹น์‹ ์€ ๋‚ด๊ฐ€ ํ•ญ์ƒ ์ŠคํŠธ๋ฆผ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๊ณ  ๊ทธ๊ฒƒ์„ ๋ชฐ๋ž๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?"

"์˜ˆ, ์ด ์ŠคํŠธ๋ฆผ์ด ์–ผ๋งˆ๋‚˜ ํŽธ๋ฆฌํ•œ์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜๋ฅผ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค."

"ํ•˜์ง€๋งŒ System.in์— ๋Œ€ํ•ด์„œ๋Š” ๊ทธ๋ ‡๊ฒŒ ๋งํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋Š์ž„์—†์ด BufferedReader ๋˜๋Š” InputStreamReader๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค."

"๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋Ÿด๋งŒํ•œ ์ด์œ ๋„ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค."

๋งŽ์€ ๋ฐ์ดํ„ฐ ์œ ํ˜•๊ณผ ๋‹ค์–‘ํ•œ ์ž‘์—… ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ‘œ์ค€ I/O ํด๋ž˜์Šค์˜ ์ˆ˜๋Š” ๋ชจ๋“  ์ž‘์—…์„ ๊ฑฐ์˜ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ˆ˜ํ–‰ํ–ˆ์ง€๋งŒ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์ฆ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ณต์žก์„ฑ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด Java ๊ฐœ๋ฐœ์ž๋Š” ์ถ”์ƒํ™” ์›์น™์„ ์‚ฌ์šฉํ•˜๊ณ  ํด๋ž˜์Šค๋ฅผ ๋งŽ์€ ์ž‘์€ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ„์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ๋ถ€๋ถ„์„ ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ์—ฐ๊ฒฐํ•˜๊ณ  ๋งค์šฐ ๋ณต์žกํ•œ ๊ธฐ๋Šฅ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค.

์ฝ˜์†”์— ๋ฌธ์ž์—ด ์ถœ๋ ฅ
System.out.println("Hello");
์ฝ˜์†” ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์„ ๋ณ„๋„์˜ ๋ณ€์ˆ˜์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
์ŠคํŠธ๋ฆผ์— ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
PrintStream console = System.out;
console.println("Hello");
๋ฉ”๋ชจ๋ฆฌ์— ๋™์ (ํ™•์žฅ) ๋ฐ”์ดํŠธ ๋ฐฐ์—ด์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
์ƒˆ ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ(PrintStream ๊ฐœ์ฒด)์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
์ŠคํŠธ๋ฆผ์— ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
ByteArrayOutputStream stream = new ByteArrayOutputStream();
PrintStream console = new PrintStream(stream);
console.println("Hello");

"์†”์งํžˆ ์ด๊ฒƒ์€ ๋ ˆ๊ณ  ์„ธํŠธ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์ด ์ฝ”๋“œ๊ฐ€ ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."

"์ง€๊ธˆ์€ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๋ชจ๋“  ๊ฒƒ์€ ์ •ํ•ด์ง„ ์‹œ๊ฐ„์— ์žˆ์Šต๋‹ˆ๋‹ค."

์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ๋‹น์‹ ์ด ๊ธฐ์–ตํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค: ํด๋ž˜์Šค๊ฐ€ OutputStream ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค๋ฉด, ๋‹น์‹ ์€ ๊ทธ๊ฒƒ์— ๋ฐ”์ดํŠธ๋ฅผ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ˜์†”์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฑฐ์˜ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์œผ๋กœ ํ•˜๋Š” ์ผ์€ ๊ทธ๊ฒƒ์˜ ์‚ฌ์—…์ž…๋‹ˆ๋‹ค. "๋ ˆ๊ณ  ํ‚คํŠธ"๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ ๊ฐœ๋ณ„ ๋ถ€ํ’ˆ์˜ ๋ชฉ์ ์— ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ถ€ํ’ˆ ์„ ํƒ์˜ ํญ์ด ๋„“์–ด ๋ฉ‹์ง„ ๊ฒƒ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์— ๊ด€์‹ฌ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

"์•Œ์•˜์–ด. ๊ทธ๋Ÿผ ์–ด๋””๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์ง€?"

์ฝ”๋ฉ˜ํŠธ
  • ์ธ๊ธฐ
  • ์‹ ๊ทœ
  • ์ด์ „
์ฝ”๋ฉ˜ํŠธ๋ฅผ ๋‚จ๊ธฐ๋ ค๋ฉด ๋กœ๊ทธ์ธ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
์ด ํŽ˜์ด์ง€์—๋Š” ์•„์ง ์ฝ”๋ฉ˜ํŠธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค