โ 1. ์คํธ๋ฆผ(Stream)์ด๋?
- ๋ฐ์ดํฐ๊ฐ ํ์ชฝ์์ ๋ค๋ฅธ ์ชฝ์ผ๋ก ์ฐ์์ ์ผ๋ก ํ๋ฅด๋ ํต๋ก๋ฅผ ์๋ฏธํ๋ฉฐ, ๋ฐ์ดํฐ์ ํ๋ฆ์ ์ถ์ํํ ๊ฐ์ฒด๊ฐ Stream์.
- ์ฝ๊ฒ๋งํด, Stream์ ์๋๊ด ๋ฐ์ดํฐ๋ ๊ทธ ์์์ ํ๋ฅด๋ ๋ฌผ๊ณผ ๊ฐ์ ๋๋์ด๊ณ , ๊ฐ๋ฐ์๊ฐ ์๋๊ผญ์ง๋ฅผ ํ๊ฑฐ๋ ์ ๊ทธ๋ ์ญํ ์.
- ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํธ ๋จ์๋ก ์ ์ถ๋ ฅํ๊ธฐ ์ํ ํต๋ก๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
- ์๋ฐ์์ ๋ชจ๋ IO ๊ธฐ๋ฐ ํต์ ์ ์คํธ๋ฆผ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ ธ ์์. ( ๋คํธ์ํฌ, HTTP, ํ์ผ, ์ฝ์ ๋ฑ )
โ 2. ์คํธ๋ฆผ(Stream) ์ข ๋ฅ
- ํฌ๊ฒ ๊ธฐ๋ณธ ์ ๋ ฅ ์คํธ๋ฆผ, ์ถ๋ ฅ ์คํธ๋ฆผ์ด ์์ผ๋ฉฐ ๊ฐ๊ฐ ๊ธฐ๋ณธ ์คํธ๋ฆผ๊ณผ ๋ณด์กฐ ์คํธ๋ฆผ์ ์ ๊ณตํด์ค๋ค.
- ๊ธฐ๋ณธ, ๋ณด์กฐ ์คํธ๋ฆผ ๋ด๋ถ์์๋ ๋ฐ์ดํธ ์คํธ๋ฆผ, ๋ฌธ์ ์คํธ๋ฆผ์ผ๋ก ๋ ๋๋์ด์ง๊ฒ ๋๋ค.
(1) ๊ธฐ๋ณธ ์คํธ๋ฆผ
- Java I/O์์ ์ ์ถ๋ ฅ์ ์ฒ๋ฆฌํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ ์คํธ๋ฆผ ํด๋์ค๋ฅผ ์๋ฏธํ๋ค.
- ์ฆ, ์ ์ถ๋ ฅ ์ฒ๋ฆฌ๋ฅผ ์ํ ๊ธฐ๋ฅ์ ๋ชจ๋ ๊ฐ์ง๊ณ ์๋ค๊ณ ๋ณด๋ฉด๋จ.
[1] ๋ฐ์ดํธ ์คํธ๋ฆผ
- ๊ธฐ๋ฐ ํด๋์ค: InputStream(์ ๋ ฅ), OutputStream(์ถ๋ ฅ)์ ๊ตฌํํ ํด๋์ค๋ฅผ ์๋ฏธํจ.
- ์ฒ๋ฆฌ ๋จ์: 1๋ฐ์ดํธ(8๋นํธ) ๋จ์๋ก ์ฒ๋ฆฌ๊ฐ ๋จ.
- ํ ์คํธ๊ฐ ์๋ ์ด๋ฏธ์ง, ์ค๋์ค, ๋น๋์ค, PDF, ์ด์ง ํ์ผ ๋ฑ์ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉ์ ํ๋ ์คํธ๋ฆผ์
[2] ๋ฌธ์ ์คํธ๋ฆผ
- ๊ธฐ๋ฐ ํด๋์ค: Reader, Writer -> ๊ตฌํํ FileReader, FileWriter ๋ฑ์ด์์.
- ์ฒ๋ฆฌ ๋จ์: 2๋ฐ์ดํธ(16๋นํธ, UTF-16 ๊ธฐ๋ฐ)
- ์ฌ์ฉ ์์: ํ ์คํธ ํ์ผ, ๋ฌธ์ ๋ฑ ๋ฌธ์ ๊ธฐ๋ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
(2) ๋ณด์กฐ ์คํธ๋ฆผ
- ์์ฒด์ ์ผ๋ก ์ ์ถ๋ ฅ ๊ธฐ๋ฅ์ ์ํํ ์ ์์ง๋ง, ๊ธฐ๋ณธ ์คํธ๋ฆผ๊ณผ ํจ๊ป ์ฌ์ฉ๋๋ ๋ณด์กฐ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
- ์ฝ๊ฒ๋งํด, ๊ธฐ๋ณธ ์คํธ๋ฆผ์ ๊ฐ์ธ์ ๊ธฐ๋ฅ์ ํ์ฅํ๋ ์คํธ๋ฆผ์ ์๋ฏธํจ.
- ๋ณด์กฐ ์คํธ๋ฆผ์ ๋ด๋ถ์ ๋ฒํผ๋ฅผ ์ฌ์ฉํด์ ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ์ฒ๋ฆฌํด ๊ธฐ๋ณธ ์คํธ๋ฆผ์ ์ฑ๋ฅ์ ์ฌ๋ ค์ค ์ ์์.
- ๋ณด์กฐ ์คํธ๋ฆผ์ readLine(), writeInt() ๋ฑ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ ๊ณต์ ํด์ค.
โ 3. InputStream ํด๋์ค ( ๋ฐ์ดํธ ์คํธ๋ฆผ )
- ๋ฐ์ดํธ ๋จ์ ์ ๋ ฅ ์คํธ๋ฆผ ํด๋์ค ์ค ์ต์์ ์ถ์ ํด๋์ค์ด๋ค.
- ์ด๊ฒ์ ํ์ ํด๋์ค๋ xxxInputStream ์.
- ์ฝ๊ฒ๋งํด, ํ์ผ์ ์ฝ์ด๋ค์ด๋ ์ญํ ์ด๋ผ๊ณ ๋ณด๋ฉด ๋จ. ์ ๋ ฅ
(1) abstract int read()
- ์ ๋ ฅ ์คํธ๋ฆผ์ผ๋ก๋ถํฐ 1๋ฐ์ดํธ๋ฅผ ์ฝ์ด ์ ์๋ก ๋ฆฌํด์ ํ๋ ์ถ์ ๋ฉ์๋์ด๋ค.
- InputStream ํด๋์ค ๋ด๋ถ์ ์ถ์ ๋ฉ์๋๋ก ๋์ด์์ผ๋ฉฐ, ๊ตฌํ์ฒด๋ค์ ํด๋น read() ๋ฉ์๋๋ฅผ ๊ตฌํํ๊ณ ์์.
(2) int read(byte[] b)
- ํ ๋ฐ์ดํธ๊ฐ ์๋, ์ฌ๋ฌ ๋ฐ์ดํธ๋ฅผ ์ฝ์ ์ ์๋ ๋ฉ์๋์ด๋ค.
- ์ ๋ ฅ ์คํธ๋ฆผ์ผ๋ก๋ถํฐ ์ฝ์ด์ byte ๋ฐฐ์ด์ ์ ์ฅํ๊ณ , ์ฝ์ด ๋ค์ธ ๋ฐ์ดํธ ๊ฐ์๋ฅผ ๋ฆฌํดํจ.
(2) int read(byte[] b, int off, int len)
- len ๋ฐ์ดํธ๋ฅผ ์ฝ์ด์ ๋ฐ์ดํธ ๋ฐฐ์ด์ off ์์น๋ถํฐ ์ ์ฅํจ.
โ 4. OutputStream ํด๋์ค ( ๋ฐ์ดํธ ์คํธ๋ฆผ )
- ๋ฐ์ดํธ ๋จ์ ์ถ๋ ฅ ์คํธ๋ฆผ ํด๋์ค ์ค ์ต์์ ์ถ์ ํด๋์ค์ด๋ค.
- ์ด๊ฒ์ ํ์ ํด๋์ค๋ xxxOutputStream
- ์ถ๋ ฅ ์คํธ๋ฆผ์ผ๋ก๋ถํฐ 1๋ฐ์ดํธ๋ฅผ ์ฝ์ด ์ ์๋ก ๋ฆฌํด์ ํ๋ ์ถ์ ๋ฉ์๋์ด๋ค.
- ๋ฐ์ดํธ ๊ธฐ๋ฐ ์ถ๋ ฅ ์คํธ๋ฆผ์ ์ต์์ ์ถ์ ํด๋์ค์.
- ํ์ผ, ๋คํธ์ํฌ, ๋ฉ๋ชจ๋ฆฌ ๋ฑ ์ธ๋ถ๋ก ์ถ๋ ฅํ ๋ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ ํด๋์ค์.
- ์ฝ๊ฒ๋งํด, ํ ์คํธ ํ์ผ์ ์ ๊ทผํด์ ํ ์คํธ๋ฅผ ๋ฃ๊ธฐ ์ํ ํด๋์ค์.
(1) abstract void write(int b)
- ์ถ๋ ฅ ์คํธ๋ฆผ์ผ๋ก๋ถํฐ 1๋ฐ์ดํธ๋ฅผ ์ฝ์ด ์ ์๋ก ๋ฆฌํด์ ํ๋ ์ถ์ ๋ฉ์๋์ด๋ค.
(2) void write(byte[] b)
- byteํ ๋ฐฐ์ด b์ ๋ชจ๋ ๋ฐ์ดํธ๋ฅผ ์ถ๋ ฅ ์คํธ๋ฆผ์ ์
(3) void write(byte[] b, int off, int len)
- byteํ ๋ฐฐ์ด b์ off ์์น๋ถํฐ len ๋ฐ์ดํธ๋ฅผ ์ถ๋ ฅ ์คํธ๋ฆผ์ ์
(4) void close()
- ์ถ๋ ฅ ์คํธ๋ฆผ์ ๋ซ๊ณ ์์์ ๋๋ ค์ค
(5) void flush()
- ์ถ๋ ฅ ์คํธ๋ฆผ์ ๋จ์ ์๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ต์ข ๋ชฉ์ ์ง๋ก ๋ณด๋
- ๋ณดํต์ ์ถ๋ ฅ์ ํ ๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ฒํผ์ ์ ์ฅ์ ํ๋๋ฐ ๊ฑฐ๊ธฐ ๋ด๋ถ์ ๋จ์ ์๋ ๋ด์ฉ์ ๋ณด๋ด์ค.
โ 5. Reader ํด๋์ค
- ์ ๋ ฅ์ฉ ์บ๋ฆญํฐ ๋จ์ ์คํธ๋ฆผ ํด๋์ค ์ค ์ต์์ ์ถ์ ํด๋์ค
- ์ด๊ฒ์ ํ์ ํด๋์ค๋ xxxReader
- FileReader: ๋ฌธ์ ๋จ์๋ก ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ๋ฉฐ, ํ๊ธ๋ ์ ๋์ด ( 2๋ฐ์ดํธ ๋ฌธ์ ๋จ์๋ก ์ฝ์)
- ๋ฐ๋ฉด, FileInputStream์ 1๋ฐ์ดํธ(0~255) ๋จ์๋ก ์ฝ์.
- ํ ์คํธ๋ฅผ ๋ค๋ฃฐ ๋ FileReader๊ฐ ์ ํฉํจ.
(1) int read()
- ์ ๋ ฅ ์คํธ๋ฆผ์์ 1๊ฐ ๋ฌธ์(2๋ฐ์ดํธ)๋ฅผ ์ฝ์ด ๋ฆฌํดํจ
(2) int read(char[] cbuf)
- ์ ๋ ฅ ์คํธ๋ฆผ์์ ๋ฌธ์๋ค์ ์ฝ์ด char ํ ๋ฐฐ์ด cbuf์ ์ ์ฅํ๊ณ , ์ฝ์ด ๋ค์ธ ๋ฌธ์์ ๊ฐ์๋ฅผ ๋ฆฌํดํจ
(3) boolean ready()
- ์ ๋ ฅ ์คํธ๋ฆผ์ ์ ๋ ฅ ๋ฐ์ดํฐ๊ฐ ์ค๋น๋์์ผ๋ฉด true๋ฅผ ๋ฆฌํดํจ
(4) abstract void close()
- ์ ๋ ฅ ์คํธ๋ฆผ์ ๋ซ๊ณ ์์์ ๋ฐํํจ.
โ 6. Writer ํด๋์ค
- ์ถ๋ ฅ์ฉ ์บ๋ฆญํฐ ๋จ์ ์คํธ๋ฆผ ํด๋์ค ์ค ์ต์์ ์ถ์ ํด๋์ค
- ์ด๊ฒ์ ํ์ ํด๋์ค๋ xxxWriter
- FileWriter: ๋ฌธ์ ๋จ์๋ก ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ๋ฉฐ, ํ๊ธ๋ ์ ๋์ด ( 2๋ฐ์ดํธ ๋ฌธ์ ๋จ์๋ก ์ถ๋ ฅ )
- ๋ฐ๋ฉด, FileOutputStream์ 1๋ฐ์ดํธ(0~255) ๋จ์๋ก ์ถ๋ ฅํจ. ( ์ฆ, ์ฐ๊ธฐ ์์ ์ ํจ )
- ํ ์คํธ๋ฅผ ๋ค๋ฃฐ ๋ FileWriter๊ฐ ์ ํฉํจ.
โ 7. ํ์ผ ์ ์ถ๋ ฅ
(1) File ํด๋์ค
File file1 = new File("C:/example/test.txt");
File file2 = new File("C:/example", "test.txt");
File file3 = new File(new File("C:/example"), "test.txt");
- ํ์ผ์ด๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ํํํ๋ ํด๋์ค๋ก, ์๋ ๋๋ ์ ๋ ๊ฒฝ๋ก(path)๋ฅผ ๊ฐ์ง
- java.io ํจํค์ง์ ์ํ๋ฉฐ, ํ์ผ๊ณผ ๋๋ ํ ๋ฆฌ๋ฅผ ์ถ์ํํด์ ๋ค๋ฃฐ ์ ์๋๋ก ํด์ฃผ๋ ํด๋์ค์ด๋ค.
- ์ค์ ๋ก ํ์ผ์ ๋ด์ฉ์ ์ฝ๊ฑฐ๋ ์ฐ๋ ๊ธฐ๋ฅ์ ์์. ์ฆ, ์ ์ถ๋ ฅ ๋ฉ์๋๋ ์ ๊ณต๋์ง ์์.
- ํ์ผ์ด๋ ๋๋ ํ ๋ฆฌ์ ๊ฒฝ๋ก, ์ด๋ฆ, ์์ฑ, ์กด์ฌ ์ฌ๋ถ ๋ฑ์ ํ์ธํ๊ฑฐ๋ ์กฐ์ํ๋ ๋ฐ ์ฌ์ฉ์ด ๋จ.
- ์ด์์ฒด์ ์ ํ์ผ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์ ์ฝ๋ ๊ฒ์ด๋ผ ๋ณ๋์ ์คํธ๋ฆผ์ ํ์ํ์ง ์์.
- ํด๋น ํ์ผ ํด๋์ค๋ ํ์ผ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ด์์ฒด์ ๋ก ๋ถํฐ ๋ฐ์์์ ์ ๊ณต์ ํด์ฃผ๋ ๊ฒ์.
- ํ์ผ ๋ฉํ๋ฐ์ดํฐ๋ ์ด์์ฒด์ (OS)์ ํ์ผ ์์คํ
์ด ๋ฐ๋ก ๊ด๋ฆฌํ๋ฏ๋ก,
→ Java์ File ํด๋์ค๋ง์ผ๋ก๋ ์ ๊ทผ ๊ฐ๋ฅ - ํ์ผ ๋ฐ์ดํฐ๋ ํ๋๋์คํฌ/SSD์ ์ค์ ๋ก ์ ์ฅ๋์ด ์์ผ๋ฏ๋ก,
→ ์ด๊ฑธ ์ฝ๊ฑฐ๋ ์ฐ๊ธฐ ์ํด์ ์ด์์ฒด์ ์ ์ ์์ค I/O ๊ธฐ๋ฅ์ ์ด์ฉํ๋ ์คํธ๋ฆผ์ด ํ์
โ 8. RandomAccessFile ํด๋์ค
- RandomAccessFile์ ํ์ผ์ ์ด๋ ์์น์์๋ ์ฝ๊ณ ์ธ ์ ์๋ ์ ์ถ๋ ฅ ํด๋์ค์.
- ์ผ๋ฐ์ ์ธ FileInputStream / FileOutputStream์ ์์ฐจ์ ์ผ๋ก ์ฝ๊ณ ์
- RandomAccessFile์ **์์ ์์น(์คํ์ )**๋ก ์ด๋ํ์ฌ ํ์ผ์ ์กฐ์ํ ์ ์๋ค๋ ์ ์ด ๋ค๋ฆ.
- ํ์ผ์ ์์ ์์น์์ ์ฝ๊ธฐ ๋๋ ์ฐ๊ธฐ ์ฐ์ฐ์ ์ง์์ ํด์ค.
- ํ์ผ์ ์คํํ๊ณ , ์์น๋ฅผ ์ง์ ํ๊ณ , ์ฝ๊ธฐ ๋๋ ์ฐ๊ธฐ๋ฅผ ํจ
- ์ฝ๊ณ ์ฐ๋ ์์น๋ ํ์ผ ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํด
- ํ์ผ ํฌ์ธํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ์์น๋ถํฐ ๋ฐ์ดํธ ๋จ์๋ก ์ฝ๊ฑฐ๋ ์ธ ์ ์์.
- byte ๋จ์๋ก ์ฝ๊ณ ์ฐ๋ฉฐ, ์ฝ๊ฑฐ๋ ์ธ ๋ ํ์ผ ํฌ์ธํฐ๊ฐ ์ด๋๋จ
- ๋๋ค ์์ธ์ค ํ์ผ์ ์ปค๋ค๋ byte ๋ฐฐ์ด๋ก ๋ณผ ์ ์์.
โ 9. FileInputStream & FileOutputStream ํด๋์ค
- ํ์ผ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ/์ฐ๊ธฐ ์ํ ์ ์ถ๋ ฅ์ฉ ๊ธฐ๋ณธ ์คํธ๋ฆผ์ด๋ค.
- ๋ฐ์ดํธ ๋จ์์ ์ ์ถ๋ ฅ์ ์ฒ๋ฆฌํ๋ฏ๋ก ์ด๋ฏธ์ง๋ ์ค๋์ค ํ์ผ๊ณผ ๊ฐ์ ์ด์ง ํ์ผ์ ๋ค๋ฃฐ ๋ ์ ์ฉํจ.
- ์ฆ, txt ์ฒ๋ผ ํ ์คํธ ํ์ผ์ ์ฒ๋ฆฌํ๊ธฐ์๋ ๋ถ์กฑํจ์ด ๋ง์. ( ํ๊ธ์ด ์๋๋ค๋๊ฐ ๊ทธ๋ฐ๊ฑฐ )
โ 10. FileReader & FileWriter ํด๋์ค
- ํ ์คํธ ํ์ผ์ ์ฝ๊ฑฐ๋ ์ฐ๋๋ฐ ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ ์คํธ๋ฆผ์ด๋ฉฐ, ๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ถ๋ ฅ ํ ๋ ์ฌ์ฉ์ด ๋จ.
- ๋ฌธ์ ๋จ์๋ก ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ๋ฉฐ, ํ๊ธ๋ ์ ๋์ด ( 2๋ฐ์ดํธ ๋ฌธ์ ๋จ์๋ก ์ฝ์)
โ 11. ์ฝ์ ์ ์ถ๋ ฅ๊ณผ ๋ณด์กฐ ์คํธ๋ฆผ
(1) Console ํด๋์ค
- ์ฝ์ ์ ์ถ๋ ฅ์ ์ ๊ณตํ๋ ํด๋์ค์ด๋ค.
- ํค๋ณด๋ ์ ๋ ฅ๊ณผ ํ๋ฉด ์ถ๋ ฅ์ ํธ๋ฆฌํ๊ฒ ์ง์์ ํจ.
- ๋ช ๋ น ํ๋กฌํํธ ์ฐฝ๊ณผ ๊ฐ์ ์ฝ์ ํ๊ฒฝ์์ ์ฌ์ฉ์์์ ์ํธ์์ฉ์ ์ง์ํจ. ( ์ฆ, IDE์์๋ ์ง์์ ์ํ๋ ๋ฏ )
- System.console()์ ์ฌ์ฉํ์ฌ ์ฝ์ ๊ฐ์ฒด๋ฅผ ์์ฑํจ.
(2) ๋ณด์กฐ ์คํธ๋ฆผ
FileInputStream fis = new FileInputStream("text.txt");
BufferedInputStream bis = new BufferedInputStream(fis);
- ๊ธฐ๋ณธ ์คํธ๋ฆผ์ ์ฑ๋ฅ์ด๋ ํธ์์ฑ์ ๋์ด๋ ๋ณด์กฐ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์คํธ๋ฆผ์ด๋ค.
- ์ ์ถ๋ ฅ ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ ์คํธ๋ฆผ์ด ํ์์์์ด๊ณ , ํด๋น ๊ธฐ๋ณธ ์คํธ๋ฆผ์ ์์ฑํ๊ณ ์ดํ ๋ณด์กฐ ์คํธ๋ฆผ์ ์์ฑํ๋ ๊ตฌ์กฐ์.
- ์ฆ, ๋ณด์กฐ ์คํธ๋ฆผ์ ์์ฑ์ ์ธ์๋ก ๊ธฐ๋ณธ ์คํธ๋ฆผ์ ์์ฑํด์ ๋ฃ์ด์ค์ผํจ.
(3) ๋ณด์กฐ ์คํธ๋ฆผ ์ข ๋ฅ
[1] ๋ฒํผ๋ง ๊ธฐ๋ฅ ์ ๊ณต
- BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter
[2] Java์ ๊ธฐ๋ณธ ์๋ฃํ์ ๊ทธ๋๋ก ์ฝ๊ธฐ/์ฐ๊ธฐ ์ํ ๊ธฐ๋ฅ ์ ๊ณต
- DataInputStream, DataOutputStream
[3] ๋ค์ํ ์ถ๋ ฅ ํ์์ ์ ๊ณต
- PrintStream, PrintWriter
[4] ํ ์คํธ ํ์ผ์ ๋ผ์ธ ๋จ์๋ก ์ฝ๊ฑฐ๋ ๋ผ์ธ ๋ฒํธ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฉ์๋ ์ ๊ณต
- LineNumberReader
- BufferedReader์ ์๋ธ ํด๋์ค์ด๋ค.
- ํ ์คํธ ํ์ผ์ ๋ผ์ธ ๋จ์๋ก ์ฝ์ด ๋ค์ด๋ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.
[5] ๋ฐ์ดํธ ์คํธ๋ฆผ๊ณผ ์บ๋ฆญํฐ ์คํธ๋ฆผ์ ํธํ
- InputStreamReader, OutputStreamWriter
- ๋ฐ์ดํธ ๋จ์๋ก ์ฝํ๋ ์คํธ๋ฆผ์ ๋ฌธ์ ๋จ์๋ก ์ฝ์ ์ ์๊ฒ ํจ.
- ํน์ ๋ฌธ์์ธ์ฝ๋ฉ์ ์ฌ์ฉํ์ฌ ๋ณํํ ์ ์์
- ์์ฑ์๋ InputStreamReader(InputStream in, Charset cs)
- ์ฆ, new InputStreamReader(System.in, "euc-kr"); ํ์์ผ๋ก ๋ง๋ฌ String ๋๋ Charset ์ผ๋ก ๋๊ธธ ์ ์์.
- ์ด๋ ๊ฒํ๋ฉด, read() ๋ฉ์๋๋ฅผ ํตํด ๋ฌธ์๋ฅผ ์ฝ์ ์ ์์. ์ฆ, 1๋ฐ์ดํธ๋ก ์ฝ๊ณ ์ธ์ฝ๋ฉํด์ ์ถ๋ ฅํด์ฃผ๋ ๊ฒ์.
- ์ฆ, 1๋ฐ์ดํธ์ฉ ์ฝ๊ณ → ์ง์ ํ ๋ฌธ์ ์ธ์ฝ๋ฉ์ผ๋ก ํด์ํด์ → ๋ฌธ์(char)๋ก ๋ณํํด์ค.