API Document :
Provides for system input and output through data streams, serialization and the file system. Unless otherwise noted, passing a null argument to a constructor or method in any class or interface in this package will cause a NullPointerException to be thrown.
๋ฒ์ญ : ๋ฐ์ดํฐ ์คํธ๋ฆผ, ์ง๋ ฌํ ๋ฐ ํ์ผ ์์คํ ์ ํตํ ์์คํ ์ ๋ ฅ ๋ฐ ์ถ๋ ฅ์ ์ ๊ณตํฉ๋๋ค. ๋ฌ๋ฆฌ ๋ช ์๋์ง ์๋ ํ, ์ด ํจํค์ง์ ํด๋์ค ๋๋ ์ธํฐํ์ด์ค์ ์๋ ์์ฑ์๋ ๋ฉ์๋์ null ์ธ์๋ฅผ ์ ๋ฌํ๋ฉด NullPointerException์ด throw๋ฉ๋๋ค.
์ฆ, Java I/O package์๋ ํ์ผ ์ ์ถ๋ ฅ๊ณผ ๊ด๋ จ๋ ํด๋์ค๋ค๋ก ๊ตฌ์ฑ๋์ด ์๋ค๋ ์๋ฏธ์ด๋ค.
Input(์
๋ ฅ), Output(์ถ๋ ฅ)์ ์ฝ์๋ค.
Input = TV์ ์
๋ ฅ ์ผ์ด๋ธ, Output = ์ถ๋ ฅ ์ผ์ด๋ธ๊ณผ ๊ฐ๋ค.
Input,Output ๊ตฌ๋ถ์์ด ์ด๋ ํ ์ชฝ์์ ๋ค๋ฅธ ์ชฝ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ค๋ฉด
์ผ์ข
์ ๋ค๋ฆฌ ์ญํ (ํน์ ์ฐ๊ฒฐํต๋ก)์ ํ๋ ๋์ด ํ์ํ๋ค. ๊ทธ ๋์ด ๋ฐ๋ก Stream(->) ์ด๋ค.
Stream์ ์ด์์ ๋ฐ์ดํฐ์ ํ๋ฆ์ ๋ฌผ์ ๋น์ ํ์ฌ ๋ถ์ฌ์ง ์ด๋ฆ์ธ๋ฐ,
๋ฌผ์ ํ๋ฆ๊ณผ ๊ฐ์ด ํ๋ฐฉํฅ์ผ๋ก๋ง ํ๋ฅด๋ ๋จ๋ฐฉํฅํต์ ๋ง ๊ฐ๋ฅํ๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํ๋์ Stream์ผ๋ก ์
๋ ฅ(Input)๊ณผ ์ถ๋ ฅ(Output)์ ๋์์ ์ฒ๋ฆฌํ ์ ์๋ค.
โกStream์ ๋จผ์ ๋ณด๋ธ ๋ฐ์ดํฐ๋ฅผ ๋จผ์ ๋ฐ๊ฒ ๋์ด์๋ค.
(Queue ํ๋ฅ๊ณผ ๊ฐ์ ๊ตฌ์กฐ)
์ฆ, ๋ฌด์ธ๊ฐ์ ๋ํด ์
์ถ๋ ฅ ์ฒ๋ฆฌ๋ฅผ ๋์์ ํ๊ณ ์ถ๋ค๋ฉด Stream ํ๋๋ก ํ๋๊ฒ ์๋๋ผ
InputStream, OutputStream ๋ ๊ฐ์ Stream ๊ฐ์ฒด๋ฅผ ์์ฑํด์ผ ํ๋ค.
InputStream, OutputStream ๋ ๋ค byte ๊ธฐ๋ฐ ์ ์ถ๋ ฅ Stream์ ์ต์์ ํด๋์ค๋ก ์ถ์ ํด๋์ค์ด๋ค.
๊ด๋ จ๋ ๋ชจ๋ byte ๊ธฐ๋ฐ ์
์ถ๋ ฅ ์คํธ๋ฆผ์ ์ด ํด๋์ค๋ฅผ ์์๋ฐ์์ ๋ง๋ค์ด์ง๋ค.
byte๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ฉฐ ์
์ถ๋ ฅ ๋์์ ๋ฐ๋ผ ์ ๊ณตํ๋ ํด๋์ค๊ฐ ๋ค๋ฅด๋ค.
๊ทธ๋ฆผ, ๋ฉํฐ๋ฏธ๋์ด ๋ฌธ์ ๋ฑ ๋ชจ๋ ์ข
๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์๊ฐ ์๋ค.
์๋ฅผ ๋ค์ด, FileInputStream์ File์ InputStream ํด๋์ค์์ ํ์ผ์ ์ฝ๋๋ฐ ํ์ํ ์ถ์๋ฉ์๋๋ฅผ ์์ ์๊ฒ ๋ง๊ฒ ๊ตฌํํด ๋์ ํด๋์ค์ด๋ค.
void close(); โก ์คํธ๋ฆผ์ ๋ซ์์ผ๋ก์จ ์ฌ์ฉํ๊ณ ์๋ ์์์ ๋ฐํํ๋ค.
abstract int read(); โก 1byte๋ฅผ ์ฝ์ด์จ๋ค. ๋์ด์ ์ฝ์ด์ฌ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด -1์ ๋ฐํํ๋ค. ์ถ์๋ฉ์๋๋ผ์ InputStream์ ์์๋ค์ ์์ ์ ๋ง๊ฒ ๊ตฌํํด์ผํ๋ค.
int read(byte[] b); โก ๋ฐฐ์ด b์ ํฌ๊ธฐ๋งํผ ์ฝ์ด์ ๋ฐฐ์ด์ ์ฑ์ฐ๊ณ , ์ฝ์ด ์จ ๋ฐ์ดํฐ์ ์๋ฅผ ๋ฐํํ๋ค. ๋ฐํํ๋ ๊ฐ์ ํญ์ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค. (๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ์ด๊ณผํ ์ ์๋ค.)
int read(byte[] b, int off, int len); โก ์ต๋ len๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ ๋ฐฐ์ด b์ ์ง์ ๋ ์์น(off)๋ถํฐ ์ ์ฅํ๋ค. ์ฝ์ด์ฌ ์ ์๋ ๋ฐ์ดํฐ๊ฐ len๋ณด๋ค ์ ์ ์๋ ์๋ค.
void close(); โก ์ ๋ ฅ์์ค๋ฅผ ๋ซ์์ผ๋ก์จ ์ฌ์ฉํ๊ณ ์๋ ์์์ ๋ฐํํ๋ค.
void flush(); โก ์คํธ๋ฆผ์ ๋ฒํผ์ ์๋ ๋ชจ๋ ๋ด์ฉ์ ์ถ๋ ฅ์์ค์ ์ด๋ค.
abstract void write(int b); โก ์ฃผ์ด์ง ๊ฐ์ ์ถ๋ ฅ์์ค์ ์ด๋ค.
void write(byte[] b); โก ๋ฐฐ์ด b์ ์ ์ฅ๋ ๋ชจ๋ ๋ด์ฉ์ ์ถ๋ ฅ์์ค์ ์ด๋ค.
void write(byte[] b, int off, int len); โก ๋ฐฐ์ด b์ ์ ์ฅ๋ ๋ด์ฉ ์ค์์ off๋ฒ์งธ๋ถํฐ len๊ฐ ๋งํผ๋ง ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ ์ถ๋ ฅ์์ค์ ์ด๋ค.
Reader, Writer ๋ ๋ค ๋ฌธ์ ๋ฐ์ดํฐ ๊ธฐ๋ฐ ์
์ถ๋ ฅ์ ์ต์์ ํด๋์ค์ด๋ค. ๊ด๋ จ๋ ๋ชจ๋ ํ
์คํธ ๊ธฐ๋ฐ ์
์ถ๋ ฅ์ ์ด ํด๋์ค๋ฅผ ์์๋ฐ์์ ๋ง๋ค์ด ์ง๋ค.
๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ์
์ถ๋ ฅ ํ ๋ ์ฌ์ฉํ๋ ๋ฌธ์ ๊ธฐ๋ฐ์ Stream์ด๋ค.
์ค๋ก์ง ๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด ํนํ๋์ด์๋ค.
Stream์ ๊ธฐ๋ฅ์ ๋ณด์ํ๊ธฐ ์ํด ๋์จ Stream (์๋ ํฅ์, ๋ฐ์ดํฐ ํฌ๋งท ๋ฑ)
//๋จผ์ ๊ธฐ๋ฐ์คํธ๋ฆผ์ ์์ฑ
FileInputStream fis = new FileInputStream("text.txt");
//๊ธฐ๋ฐ์คํธ๋ฆผ์ ์ด์ฉํด์ ๋ณด์กฐ์คํธ๋ฆผ์ ์์ฑ
BufferedInputStream bis = new BufferedInputStream(fis);
//๋ณด์กฐ์คํธ๋ฆผ์ธ BufferedInputStream์ผ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋๋ค
bis.read();
//์ฝ๋ ์์ผ๋ก๋ BufferedInputStream์ด ์
๋ ฅ๊ธฐ๋ฅ์ ์ํํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง,
//์ค์ ์
๋ ฅ๊ธฐ๋ฅ์ FileInputStream์ด ์ ๊ณตํ๊ณ , BufferedInputStream์ ๋ฒํผ๋ง ์ ๊ณตํ๋ค.
๋ฒํผ๋ฅผ ์ฌ์ฉํ ์
์ถ๋ ฅ๊ณผ ์ฌ์ฉํ์ง ์์ ์
์ถ๋ ฅ์ ์ฑ๋ฅ์ฐจ์ด๋ ์๋นํ๊ธฐ ๋๋ฌธ์
๋ฒํผ๋ฅผ ์ด์ฉํ ๋ณด์กฐ ์คํธ๋ฆผ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค.