โ๏ธ Info.
- Java I/O ํ์ต
๐ List.
1. ์คํธ๋ฆผ (Stream)
2. ๋ฒํผ(Buffer)
3. ์ฑ๋(Channel)
4. Byte
5. Character
6. ํ์ค ์คํธ๋ฆผ (System.in, System.out, System.err)
7. ํ์ผ ์ฝ๊ณ ์ฐ๊ธฐ
โ๏ธ Content.
1. ์คํธ๋ฆผ (Stream)
- ์๋ฐ๋ ํ์ผ์ด๋ ์ฝ์์ ์ ์ถ๋ ฅ์ ์ง์ ๋ค๋ฃจ์ง ์๊ณ , ์คํธ๋ฆผ(Stream)์ด๋ผ๋ ํ๋ฆ์ ํตํด ๋ค๋ฃฌ๋ค.
- ์ค์ ์ ๋ ฅ์ด๋ ์ถ๋ ฅ์ด ํํ๋ ๋ฐ์ดํฐ์ ์ด์ํ๋ ํ๋ฆ
- ์ด์์ฒด์ ์ ์ํด ์์ฑ๋๋ ๊ฐ์์ ์ฐ๊ฒฐ๊ณ ๋ฆฌ, ์ค๊ฐ ๋งค๊ฐ์ ์ญํ
1). ์ ์ถ๋ ฅ ์คํธ๋ฆผ(InputStream๊ณผ OutputStream)
- ์คํธ๋ฆผ์ ํ ๋ฐฉํฅ์ผ๋ก๋ง ํต์ ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ๋์์ ์ฒ๋ฆฌํ ์ ์๋ค.
- java.io ํจํค์ง๋ฅผ ํตํด InputStream, OutputStream ํด๋์ค๋ฅผ ๋ณ๋ ์ ๊ณตํ๋ค.
- ์ฆ, ์คํธ๋ฆผ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์์ฑํด์ ์ฌ์ฉํ๋ค.
1.1) InputStream
- ๋ฐ์ดํธ ๊ธฐ๋ฐ ์ ๋ ฅ ์คํธ๋ฆผ์ ์ต์์ ํด๋์ค๋ก ์ถ์ ํด๋์ค์ด๋ค.
- ๋ชจ๋ ๋ฐ์ดํธ ๊ธฐ๋ฐ ์ ๋ ฅ ์คํธ๋ฆผ์ InputStream ํด๋์ค๋ฅผ ์์๋ฐ์์ ๋ง๋ค์ด์ง๋ค.
- read() ๋ฉ์๋๊ฐ ์ถ์ ๋ฉ์๋๋ก ํฌํจ๋์ด ์๋ค.
๋ฉ์๋ | ์ค๋ช |
abstract int read() | ์
๋ ฅ ์คํธ๋ฆผ์ผ๋ก๋ถํฐ 1๋ฐ์ดํธ๋ฅผ ์ฝ๊ณ ์ฝ์ ๋ฐ์ดํธ๋ฅผ ๋ฆฌํดํ๋ค |
int read(byte[] b) | ์
๋ ฅ ์คํธ๋ฆผ์ผ๋ก๋ถํฐ ํน์ ๋ฐ์ดํธ๋ฅผ ์ฝ์ด๋ค์ธ ํ, ๋ฐฐ์ด b์ ์ ์ฅํ๊ณ ์ค์ ๋ก ์ฝ์ ๋ฐ์ดํธ ์๋ฅผ ๋ฆฌํดํ๋ค. |
int read(byte[] b, int off, int len) | ์
๋ ฅ ์คํธ๋ฆผ์ผ๋ก๋ถํฐ len ๋ฐ์ดํธ๋ฅผ ์ฝ์ด๋ค์ธ ํ, ๋ฐฐ์ด b[off]๋ถํฐ ์ ์ฅํ๊ณ ์ค์ ๋ก ์ฝ์ ๋ฐ์ดํธ ์์ธ len๊ฐ๋ฅผ ๋ฆฌํดํ๊ณ ๋ง์ฝ len ๊ฐ๋ฅผ ๋ชจ๋ ์ฝ์ง ๋ชปํ๋ฉด ์ค์ ๋ก ์ฝ์ ๋ฐ์ดํธ ์๋ฅผ ๋ฆฌํดํ๋ค. |
void close() | ์ฌ์ฉํ ์์คํ ์์์ ๋ฐ๋ฉํ๊ณ ์ ๋ ฅ ์คํธ๋ฆผ์ ๋ซ๋๋ค. |
read()์ ๋ฐํ ํ์ ์ด int์ธ ์ด์
- read()์ ๋ฐํ ๊ฐ์ ๋ฒ์๋ 0~255, -1
- ์ ๋ ฅ ์คํธ๋ฆผ์์ ๋ ์ด์ ์ฝ์ด ๋ค์ผ ๋ฐ์ดํธ๊ฐ ์์ผ๋ฉด, -1์ ๋ฐํํด์ผ ํ๋ค. ํ์ง๋ง ๋ฐํ ํ์ ์ด byteํ์ ์ด๋ฉด -1์ ํํํ ์ ์๊ธฐ ๋๋ฌธ์ intํ์ผ๋ก ์ ์ธํ๋ค.
InputStream read() ์ฌ์ฉ ์
void input() throws IOException {
InputStream in = System.in;
int read;
while((read = in.read()) != -1){
}
}
1.2) OutputStream
- ๋ฐ์ดํธ ๊ธฐ๋ฐ ์ถ๋ ฅ ์คํธ๋ฆผ์ ์ต์์ ํด๋์ค๋ก ์ถ์ ํด๋์ค์ด๋ค.
- ๋ชจ๋ ๋ฐ์ดํธ ๊ธฐ๋ฐ ์ถ๋ ฅ ์คํธ๋ฆผ์ OutputStream ํด๋์ค๋ฅผ ์์๋ฐ์์ ๋ง๋ค์ด์ง๋ค.
- write() ๋ฉ์๋๊ฐ ์ถ์ ๋ฉ์๋๋ก ํฌํจ๋์ด ์๋ค.
๋ฉ์๋ | ์ค๋ช |
abstract void write(int b) | ์ถ๋ ฅ ์คํธ๋ฆผ์ผ๋ก 1๋ฐ์ดํธ๋ฅผ ๋ณด๋ธ๋ค (b์ ๋ 1๋ฐ์ดํธ) |
void write(byte[] b) | ์ถ๋ ฅ ์คํธ๋ฆผ์ผ๋ก ์ฃผ์ด์ง ๋ฐ์ดํธ ๋ฐฐ์ด b์ ๋ชจ๋ ๋ฐ์ดํธ๋ฅผ ๋ณด๋ธ๋ค. |
void write(byte[] b, int off, int len) | ์ถ๋ ฅ ์คํธ๋ฆผ์ผ๋ก ์ฃผ์ด์ง ๋ฐ์ดํธ ๋ฐฐ์ด b[off] ๋ถํฐ len ๊น์ง์ ๋ฐ์ดํธ๋ฅผ ๋ณด๋ธ๋ค. |
void flush() | ๋ฒํผ์ ์๋ฅํ๋ ๋ชจ๋ ๋ฐ์ดํธ๋ฅผ ์ถ๋ ฅํ๋ค. |
void close() | ์ฌ์ฉํ ์์คํ ์์์ ๋ฐ๋ฉํ๊ณ ์ถ๋ ฅ ์คํธ๋ฆผ์ ๋ซ๋๋ค. |
2). ๋ณด์กฐ ์คํธ๋ฆผ
- ์ค์ ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์๋ ์์ง๋ง, ์คํธ๋ฆผ์ ๊ธฐ๋ฅ์ ํฅ์ํ๊ฑฐ๋ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํด ์ฃผ๋ ์คํธ๋ฆผ
- ๋ค๋ฅธ ์คํธ๋ฆผ๊ณผ ์ฐ๊ฒฐ๋์ด ์ฌ๋ฌ ๊ฐ์ง ํธ๋ฆฌํ ๊ธฐ๋ฅ์ ์ ๊ณตํด์ฃผ๋ ์คํธ๋ฆผ
- ํํฐ(filter) ์คํธ๋ฆผ์ด๋ผ๊ณ ๋ ํ๋ค. ์ด๋ ๋ณด์กฐ ์คํธ๋ฆผ์ ์ผ๋ถ๊ฐ FilterInputStream, FilterOutputStream์ ํ์ ํด๋์ค์ด๊ธฐ ๋๋ฌธ์ด๋ค.
- ๋ฌธ์๋ณํ, ์ ์ถ๋ ฅ ์ฑ๋ฅ ํฅ์, ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ ์ ์ถ๋ ฅ, ๊ฐ์ฒด ์ ์ถ๋ ฅ ๋ฑ์ ๊ธฐ๋ฅ ์ ๊ณต
์ ๋ ฅ ์คํธ๋ฆผ | ์ถ๋ ฅ ์คํธ๋ฆผ | ์ค๋ช |
FilterInputStream | FilterOutputStream | ํํฐ๋ฅผ ์ด์ฉํ ์ ์ถ๋ ฅ |
BufferedInputStream | BufferedOutputStream | ๋ฒํผ๋ฅผ ์ด์ฉํ ์ ์ถ๋ ฅ |
DataInputStream | DataOutputStream | ์ ์ถ๋ ฅ ์คํธ๋ฆผ์ผ๋ก๋ถํฐ ์๋ฐ์ ๊ธฐ๋ณธ ํ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ฌ ์ ์๊ฒ ํ๋ค. |
ObjectInputStream | ObjectOutputStream | ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฒด ๋จ์๋ก ์ฝ๊ฑฐ๋, ์ฝ์ด ๋ค์ธ ๊ฐ์ฑ๋ฅผ ์ญ์ง๋ ฌํ ์ํจ๋ค. |
SequenceInputStream | X | ๋ ๊ฐ์ ์ ๋ ฅ ์คํธ๋ฆผ์ ๋ ผ๋ฆฌ์ ์ผ๋ก ์ฐ๊ฑธ |
PushbackInputStream | X | ๋ค๋ฅธ ์ ๋ ฅ ์คํธ๋ฆผ์ ๋ฒํผ๋ฅผ ์ด์ฉํ์ฌ push back์ด๋ unread์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ถ๊ฐ |
X | PrintStream | ๋ค๋ฅธ ์ถ๋ ฅ ์คํธ๋ฆผ์ ๋ฒํผ๋ฅผ ์ด์ฉํ์ฌ ๋ค์ํ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๊ธฐ ์ํ ๊ธฐ๋ฅ์ ์ถ๊ฐ |
๋ณด์กฐ ์คํธ๋ฆผ ์์ฑ
- ๋ณด์กฐ ์คํธ๋ฆผ์ ์์ฑํ ๋์๋ ์์ ์ด ์ฐ๊ฒฐ๋ ์คํธ๋ฆผ์ ์์ฑ์์ ๋งค๊ฐ ๊ฐ์ผ๋ก ๋ฐ๋๋ค.
- ๋ณด์กฐ ์คํธ๋ฆผ ๋ณ์ = new ๋ณด์กฐ ์คํธ๋ฆผ(์ฐ๊ฒฐ ์คํธ๋ฆผ)
void filterStream(){
// ์ฐ๊ฒฐ ์คํธ๋ฆผ
InputStream inputStream = System.in;
// ๋ณด์กฐ ์คํธ๋ฆผ
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
}
- ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๋ณด์กฐ ์คํธ๋ฆผ์ ๋ ๋ค๋ฅธ ๋ณด์กฐ ์คํธ๋ฆผ์๋ ์ฐ๊ฒฐ๋์ด ์คํธ๋ฆผ ์ฒด์ธ์ ๊ตฌ์ฑํ ์ ์๋ค.
void filterStream(){
// ์ฐ๊ฒฐ ์คํธ๋ฆผ
InputStream inputStream = System.in;
// ๋ณด์กฐ ์คํธ๋ฆผ
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
// ๋ณด์กฐ ์คํธ๋ฆผ 2
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
}
2. ๋ฒํผ(Buffer)
- ์ฑ๋ฅ ํฅ์ ๋ณด์กฐ ์คํธ๋ฆผ
- CPU์ ์ ์ถ๋ ฅ ์ฅ์น์ ์๋ ์ฐจ์ด์์ ๋์ค๋ ๋นํจ์จ์ฑ์ ์ค์ด๊ธฐ ์ํด ์ฌ์ฉ
- ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ์ , ๊ณ ์ ์ฅ์น ๊ฐ์ ์๋ ์ฐจ์ด๋ฅผ ์ค์ฌ์ฃผ๋ ์ญํ ์ ํ๋ ์ค๊ฐ ์ ์ฅ์
- ๋ณต์ ๊ฐ์ ๋ฐ์ดํธ๋ฅผ ํ ๋ฒ์ ์ ๋ ฅ๋ฐ๊ณ ํ ๋ฒ์ ์ถ๋ ฅ
์คํธ๋ฆผ ๊ตฌ๋ถ | ์ ๋ ฅ | ์ถ๋ ฅ |
๋ฐ์ดํธ ๊ธฐ๋ฐ ์คํธ๋ฆผ | BufferedInputStream | BufferedOutputStream |
๋ฌธ์ ๊ธฐ๋ฐ ์คํธ๋ฆผ | BufferedReader | BufferedWriter |
- BufferedInputStream๊ณผ BufferedReader ๋ณด์กฐ ์คํธ๋ฆผ์ ์์ฑ์์ ๋งค๊ฐ ๊ฐ์ผ๋ก ์ค ์ ๋ ฅ ์คํธ๋ฆผ๊ณผ ์ฐ๊ฒฐ๋์ด 81292 ๋ด๋ถ ๋ฒํผ ์ฌ์ด์ฆ๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค.
- BufferdOutputStream๊ณผ BufferedWriter ๋ณด์กฐ ์คํธ๋ฆผ์ ์์ฑ์์ ๋งค๊ฐ ๊ฐ์ผ๋ก ์ค ์ถ๋ ฅ ์คํธ๋ฆผ๊ณผ ์ฐ๊ฒฐ๋์ด 8192 ๋ด๋ถ ๋ฒํผ ์ฌ์ด์ฆ๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค.
- BufferedInputStream๊ณผ BufferedOutputStream์ ์ต๋ 8192 ๋ฐ์ดํธ๊ฐ ์ ์ฅ๋ ์ ์๋ค.
- BufferedReader๊ณผ BufferedWriter๋ ์ต๋ 8192 ๋ฌธ์๊ฐ ์ ์ฅ๋ ์ ์๋ค.
- ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด ๋ค์ด๋ ๋ฐฉ๋ฒ์ InputStream ๋๋ Reader์ ๋์ผํ๋ค.
- ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋ ๋ฐฉ๋ฒ์ OutputStream ๋๋ Writer์ ๋์ผํ๋ค.
1). BufferedInputStream๊ณผ BufferedReader
- ์ ๋ ฅ ์์ค๋ก๋ถํฐ ์์ ์ ๋ด๋ถ ๋ฒํผ ํฌ๊ธฐ๋งํผ ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ ์ฝ๊ณ ๋ฒํผ์ ์ ์ฅ
- ํ๋ก๊ทธ๋จ์ ์ธ๋ถ์ ์ ๋ ฅ ์์ค๋ก๋ถํฐ ์ง์ ์ฝ๋ ๋์ ๋ฒํผ๋ก๋ถํฐ ์ฝ์์ผ๋ก์จ ์ฝ๊ธฐ ์ฑ๋ฅ์ด ํฅ์๋๋ค.
- BufferedReader๋ readLine() ๋ฉ์๋๋ฅผ ์ถ๊ฐ์ ์ผ๋ก ๊ฐ์ง๊ณ ์์ด, ์บ๋ฆฌ์ง ๋ฆฌํด(\r) ๋ผ์ธํผ๋(\n)๋ก ๊ตฌ๋ถ๋ ํ ๋จ์์ ๋ฌธ์์ด์ ํ๊บผ๋ฒ์ ์ฝ์ ์ ์๋ค.
void buffered(){
// ์์ฑ์ - ๋ฐ์ดํธ ์
๋ ฅ ์คํธ๋ฆผ
BufferedInputStream bufferedInputStream = new BufferedInputStream(System.in);
// ์์ฑ์ - ๋ฌธ์ ์
๋ ฅ ์คํธ๋ฆผ
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
}
2). BufferedOutputStream๊ณผ BufferdWriter
- ์ฃผ์ํ ์ ์ ๋ฒํผ๊ฐ ๊ฐ๋ ์ฐผ์ ๋๋ง ์ถ๋ ฅ์ ํ๊ธฐ ๋๋ฌธ์ ๋ง์ง๋ง ๋จ์ ๋ฐ์ดํฐ ๋ถ๋ถ์ด ๋ชฉ์ ์ง๋ก ๊ฐ์ง ๋ชปํ๊ณ ๋ฒํผ์ ๋จ์ ์ ์๋ค. ๋ฐ๋ผ์ ๋ง์ง๋ง ์ถ๋ ฅ ์์ ์ ๋ง์น ํ์๋ flush() ๋ฉ์๋๋ฅผ ํธ์ถํด ๋ฒํผ์ ์๋ฅํ๊ณ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ณด๋ด๋๋ก ํด์ผ ํ๋ค.
void buffered(){
// ์์ฑ์ - ๋ฐ์ดํธ ์ถ๋ ฅ ์คํธ๋ฆผ
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(System.out);
// ์์ฑ์ - ๋ฌธ์ ์ถ๋ ฅ ์คํธ๋ฆผ
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out));
}
3. ์ฑ๋(Channel)
- ์ฑ๋์ ์คํธ๋ฆผ๊ณผ ๋ฌ๋ฆฌ ์๋ฐฉํฅ์ผ๋ก ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ด ๊ฐ๋ฅํ๋ค. ๋๋ฌธ์ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ์ํด ๋ณ๋์ ์ฑ๋์ ๋ง๋ค ํ์๊ฐ ์๋ค.
- ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ ์ฅํ๋ ์์ ์ ํ๊ธฐ ์ํด์๋ FileChannel ํ๋๋ง ์์ฑํ๋ฉด ๋๋ค.
* ์ฑ๋(Channel) ๊ณต๋ถํ๋ฉฐ ์ฑ๋ ๊ธฐ๋ฐ์ธ NIO๋ฅผ ์ค๋ช ํ๊ณ ์ ํ๋ค.
1). NIO
- ์๋ฐ 4๋ถํฐ ์๋ก์ด ์ ์ถ๋ ฅ(NIO : New Input/Output)์ด๋ผ๋ ๋ป์์ java.nio ํจํค์ง๊ฐ ํฌํจ๋์๋ค.
- ์๋ฐ 7๋ก ๋ฒ์ ์ ํ๋ฉด์ ์๋ฐ IO์ NIO ์ฌ์ด์ ์ผ๊ด์ฑ ์๋ ํด๋์ค ์ค๊ณ๋ฅผ ๋ฐ๋ก ์ก๊ณ , ๋น๋๊ธฐ ์ฑ๋ ๋ฑ์ ๋คํธ์ํฌ ์์์ ๋ํญ ๊ฐํํ NIO.2 API๊ฐ ์ถ๊ฐ๋์๋ค.
- NIO.2๋ ๊ธฐ์กด java.nio์ ํ์ ํจํค์ง(java.nio.channels, java.nio.charset, java.nio.file)์ ํตํฉ๋์๋ค.
NIO ํจํค์ง | ํฌํจ๋์ด ์๋ ๋ด์ฉ |
java.nio | ๋ค์ํ ๋ฒํผ ํด๋์ค |
java.nio.channels | ํ์ผ ์ฑ๋, TCP ์ฑ๋, UDP ์ฑ๋ ๋ฑ์ ํด๋์ค |
java.nio.channels.spi | java.nio.channels ํจํค์ง๋ฅผ ์ํ ์๋น์ค ์ ๊ณต์ ํด๋์ค |
java.nio.charset | ๋ฌธ์์ , ์ธ์ฝ๋, ๋์ฝ๋ API |
java.nio.charset.spi | java.nio.charset ํจํค์ง๋ฅผ ์ํ ์๋น์ค ์ ๊ณต์ ํด๋์ค |
java.nio.file | ํ์ผ ๋ฐ ํ์ผ ์์คํ ์ ์ ๊ทผํ๊ธฐ ์ํ ํด๋์ค |
java.nio.file.attribute | ํ์ผ ๋ฐ ํ์ผ ์์คํ ์ ์์ฑ์ ์ ๊ทผํ๊ธฐ ์ํ ํด๋์ค |
java.nio.file.spi | java.nio.file ํจํค์ง๋ฅผ ์ํ ์๋น์ค ์ ๊ณต์ ํด๋์ค |
2). IO์ NIO์ ์ฐจ์ด์
- IO์ NIO๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ถ๋ ฅํ๋ค๋ ๋ชฉ์ ์ ๋์ผํ์ง๋ง, ๋ฐฉ์์ ์์ด์ ์ฐจ์ด๊ฐ ๋๋ค.
๊ตฌ๋ถ | IO | NIO |
์ ์ถ๋ ฅ ๋ฐฉ์ | ์คํธ๋ฆผ ๋ฐฉ์ | ์ฑ๋ ๋ฐฉ์ |
๋ฒํผ ๋ฐฉ์ | ๋ ๋ฒํผ(non-buffer) | ๋ฒํผ(buffer) |
๋น๋๊ธฐ ๋ฐฉ์ | ์ง์ ์ํจ | ์ง์ |
๋ธ๋กํน / ๋๋ธ๋กํน ๋ฐฉ์ | ๋ธ๋กํน ๋ฐฉ์๋ง ์ง์ | ๋ธ๋กํน / ๋๋ธ๋กํน ๋ฐฉ์ ๋ชจ๋ ์ง์ |
3). ์คํธ๋ฆผ vs ์ฑ๋
- ์คํธ๋ฆผ
- IO๋ ์คํธ๋ฆผ(Stream) ๊ธฐ๋ฐ์ด๋ค.
- ์คํธ๋ฆผ์ ์ ๋ ฅ ์คํธ๋ฆผ๊ณผ ์ถ๋ ฅ ์คํธ๋ฆผ์ผ๋ก ๊ตฌ๋ถ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ ์ํด์๋ ์ ๋ ฅ ์คํธ๋ฆผ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๊ธฐ ์ํด์๋ ์ถ๋ ฅ ์คํธ๋ฆผ์ ์์ฑํด์ผ ํ๋ค.
- ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ ์ฅํ๋ ์์ ์ ํ๊ธฐ ์ํด์๋ FileInputStream๊ณผ FileOutputStream์ ๋ณ๋๋ก ์์ฑํด์ผ ํ๋ค.
- ์ฑ๋
- NIO๋ ์ฑ๋(Channel) ๊ธฐ๋ฐ์ด๋ค.
- ์ฑ๋์ ์คํธ๋ฆผ๊ณผ ๋ฌ๋ฆฌ ์๋ฐฉํฅ์ผ๋ก ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ด ๊ฐ๋ฅํ๋ค. ๋๋ฌธ์ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ์ํด ๋ณ๋์ ์ฑ๋์ ๋ง๋ค ํ์๊ฐ ์๋ค.
- ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ ์ฅํ๋ ์์ ์ ํ๊ธฐ ์ํด์๋ FileChannel ํ๋๋ง ์์ฑํ๋ฉด ๋๋ค.
4). ๋ ๋ฒํผ vs ๋ฒํผ
- ๋ ๋ฒํผ(IO)
- IO์์๋ ์ถ๋ ฅ ์คํธ๋ฆผ์ด 1๋ฐ์ดํธ๋ฅผ ์ฐ๋ฉด ์ ๋ ฅ ์คํธ๋ฆผ์ด 1๋ฐ์ดํธ๋ฅผ ์ฝ๋๋ค. ์ด๋ฐ ์์คํ ์ ๋์ฒด๋ก ๋๋ฆฌ๋ค.
- ๋ฒํผ๋ฅผ ์ฌ์ฉํด ๋ณต์ ๊ฐ์ ๋ฐ์ดํธ๋ฅผ ํ๊บผ๋ฒ์ ์ ๋ ฅ๋ฐ๊ณ ์ถ๋ ฅํ๋ ๊ฒ์ด ๋น ๋ฅธ ์ฑ๋ฅ์ ๋ธ๋ค.
- IO๋ ๋ฒํผ๋ฅผ ์ ๊ณตํด์ฃผ๋ ๋ณด์กฐ ์คํธ๋ฆผ์ธ BufferedInputStream, BufferdOutputStream์ ์ฐ๊ฒฐํด ์ฌ์ฉํ๊ธฐ๋ ํ๋ค.
- IO๋ ์คํธ๋ฆผ์์ ์ฝ์ ๋ฐ์ดํฐ๋ฅผ ์ฆ์ ์ฒ๋ฆฌํ๋ค. ๋ฐ๋ผ์ ์คํธ๋ฆผ์ผ๋ก๋ถํฐ ์ ๋ ฅ๋ ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ๋ณ๋๋ก ์ ์ฅํ์ง ์์ผ๋ฉด, ์ ๋ ฅ๋ ๋ฐ์ดํฐ์ ์์น๋ฅผ ์ด๋ํด ๊ฐ๋ฉฐ ์์ ๋กญ๊ฒ ์ด์ฉํ ์ ์๋ค.
- ๋ฒํผ(IO + ๋ณด์กฐ ์คํธ๋ฆผ, NIO)
- NIO๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฒํผ๋ฅผ ์ฌ์ฉํด์ ์ ์ถ๋ ฅ์ ํ๊ธฐ ๋๋ฌธ์ IO๋ณด๋ค๋ ์ ์ถ๋ ฅ ์ฑ๋ฅ์ด ์ข๋ค.
- ์ฑ๋์ ๋ฒํผ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๊ณ , ์ ๋ ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฒํผ์ ์ ์ฅํ๋ค.
- NIO๋ ์ฝ์ ๋ฐ์ดํฐ๋ฅผ ๋ถ์กฐ๊ฑด ๋ฒํผ์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ๋ฒํผ ๋ด์์ ๋ฐ์ดํฐ์ ์์น๋ฅผ ์ด๋ํด ๊ฐ๋ฉด์ ํ์ํ ๋ถ๋ถ๋ง ์ฝ๊ณ ์ธ ์ ์๋ค.
5). ๋ธ๋กํน vs ๋ ๋ธ๋กํน
- ๋ธ๋กํน(blocking) (IO, NIO)
- IO๋ ๋ธ๋กํน๋๋ค.
- ์ ๋ ฅ ์คํธ๋ฆผ์ read() ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ๋ฐ์ดํฐ๊ฐ ์ ๋ ฅ๋๊ธฐ ์ ๊น์ง ์ค๋ ๋๋ ๋ธ๋กํน(๋๊ธฐ ์ํ)๋๋ค.
- ์ถ๋ ฅ ์คํธ๋ฆผ์ write() ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ๋ฐ์ดํฐ๊ฐ ์ถ๋ ฅ๋๊ธฐ ์ ๊น์ง ์ค๋ ๋๋ ๋ธ๋กํน๋๋ค.
- IO ์ค๋ ๋๊ฐ ๋ธ๋กํน๋๋ฉด ๋ค๋ฅธ ์ผ์ ํ ์ ์๊ณ ๋ธ๋กํน์ ๋น ์ ธ๋์ค๊ธฐ ์ํด ์ธํฐ๋ฝํธ(interrupt) ๋ํ ํ ์ ์๋ค.
- ๋ธ๋กํน์ ๋น ์ ธ๋์ค๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ์คํธ๋ฆผ์ ๋ซ๋ ๊ฒ์ด๋ค.
- ๋ ๋ธ๋กํน(NIO)
- ๋ธ๋กํน์ ๋ฐ๋ ๊ฐ๋ ์ผ๋ก ์ ์ถ๋ ฅ ์์ ์ ์ค๋ ๋๊ฐ ๋ธ๋กํน๋์ง ์๋ ๊ฒ์ ๋งํ๋ค.
- NIO๋ ๋ธ๋กํน๊ณผ ๋๋ธ๋กํน ํน์ง์ ๋ชจ๋ ๊ฐ์ง๊ณ ์๋ค.
- IO ๋ธ๋กํน๊ณผ์ ์ฐจ์ด์ ์ NIO ๋ธ๋กํน์ ์ค๋ ๋๋ฅผ ์ธํฐ๋ฝํธํจ์ผ๋ก์จ ๋น ์ ธ๋์ฌ ์๊ฐ ์๋ค.
- NIO์ ๋๋ธ๋กํน์ ์
์ถ๋ ฅ ์์
์ค๋น๊ฐ ์๋ฃ๋ ์ฑ๋๋ง ์ ํํด์ ์์
์ค๋ ๋๊ฐ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์์
์ค๋ ๋๊ฐ ๋ธ๋กํน๋์ง ์๋๋ค.
- ์์ ์ค๋น ์๋ฃ : ์ง๊ธ ๋ฐ๋ก ์ฝ๊ณ ์ธ ์ ์๋ ์ํ
- NIO ๋๋ธ๋กํน์ ํต์ฌ ๊ฐ์ฒด๋ ๋ฉํฐํ๋์(multiplexor)์ธ ์ ๋ ํฐ(Selector)์ด๋ค. ์ ๋ ํฐ๋ ๋ณต์ ๊ฐ์ ์ฑ๋ ์ค์์ ์ค๋น ์๋ฃ๋ ์ฑ๋์ ์ ํํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํด์ค๋ค.
6). IO์ NIO์ ์ ํ
- NIO
- NIO๋ ๋ถํน์ ๋ค์์ ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ ๋๋ ๋ฉํฐ ํ์ผ๋ค์ ๋๋ธ๋กํน์ด๋ ๋น๋๊ธฐ๋ก ์ฒ๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ณผ๋ํ ์ค๋ ๋ ์์ฑ์ ํผํ๊ณ ์ค๋ ๋๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค๋ ํฐ ์ฅ์ ์ด ์๋ค.
- NIO๋ ์ด์์ฒด์ ์ ๋ฒํผ(๋ค์ด๋ ํธ ๋ฒํผ)๋ฅผ ์ด์ฉํ ์ ์ถ๋ ฅ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์ ์ถ๋ ฅ ์ฑ๋ฅ์ด ํฅ์๋๋ค.
- NIO๋ ์ฐ๊ฒฐ ํด๋ผ์ด์ธํธ ์๊ฐ ๋ง๊ณ , ํ๋์ ์
์ถ๋ ฅ ์ฒ๋ฆฌ ์์
์ด ์ค๋ ๊ฑธ๋ฆฌ์ง ์๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ ๊ฒ ์ข๋ค.
- ์ค๋ ๋์์ ์ ์ถ๋ ฅ ์ฒ๋ฆฌ๊ฐ ์ค๋ ๊ฑธ๋ฆฐ๋ค๋ฉด ๋๊ธฐํ๋ ์์ ์ ์๊ฐ ๋์ด๋๊ธฐ ๋๋ฌธ์ ์ ํ๋ ์ค๋ ๋๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์คํ๋ ค ๋ถ๋ฆฌํ ์ ์๋ค.
- IO
- IO๋ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๊ฒฝ์ฐ NIO๋ณด๋ค ์ ๋ฆฌํ๋ค.
- NIO๋ ๋ฒํผ์ ํ ๋น ํฌ๊ธฐ๋ ๋ฌธ์ ๊ฐ ๋๊ณ , ๋ชจ๋ ์ ์ถ๋ ฅ ์์ ์ ๋ฒํผ๋ฅผ ๋ฌด์กฐ๊ฑด ์ฌ์ฉํด์ผ ํ๋ฏ๋ก ๋ฐ์ ์ฆ์ ์ฒ๋ฆฌํ๋ IO๋ณด๋ค๋ ์ข ๋ ๋ณต์กํ๋ค.
- ์ฐ๊ฒฐ ํด๋ผ์ด์ธํธ ์๊ฐ ์ ๊ณ , ์ ์ก๋๋ ๋ฐ์ดํฐ๊ฐ ๋์ฉ๋์ด๋ฉด์ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌ๋ ํ์์ฑ์ด ์์ ๊ฒฝ์ฐ์๋ IO๋ก ์๋ฒ๋ฅผ ๊ตฌํํ๋ ๊ฒ์ด ์ข๋ค.
4. Byte
๋ฐ์ดํธ ๊ธฐ๋ฐ ์คํธ๋ฆผ
- ์๋ฐ์์์ ์คํธ๋ฆผ(Stream)์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐ์ดํธ ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ค.
- ๊ทธ๋ฆผ, ๋ฉํฐ๋ฏธ๋์ด, ๋ฌธ์ ๋ฑ ๋ชจ๋ ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ณ ๋ณด๋ผ ์ ์๋ค.
์ ์ถ๋ ฅ ๋์ | ์ ๋ ฅ ์คํธ๋ฆผ | ์ถ๋ ฅ ์คํธ๋ฆผ |
ํ์ผ | FileInputStream | FileOutputStream |
๋ฉ๋ชจ๋ฆฌ | ByteArrayInputStream | ByteArrayOutputStream |
ํ๋ก์ธ์ค | PipedInputStream | PipedOutputStream |
์ค๋์ค ์ฅ์น | AudioInputStream | AudioOutputStream |
5. Character
1). ๋ฌธ์ ๊ธฐ๋ฐ ์คํธ๋ฆผ
๊ธฐ๋ณธ์ ์ผ๋ก ์คํธ๋ฆผ์ ๋ฐ์ดํธ ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ค.
ํ์ง๋ง ์๋ฐ์์๋ ๊ฐ์ฅ ์์ ํ์ ์ด char ํ์ธ 2๋ฐ์ดํธ ์ด๋ฏ๋ก, 1๋ฐ์ดํธ์ฉ ์ ์ก๋๋ ๋ฐ์ดํธ ๊ธฐ๋ฐ ์คํธ๋ฆผ์ผ๋ก๋ ์ํํ ์ฒ๋ฆฌ๊ฐ ํ๋ค๋ค
๋ฐ๋ผ์ ์๋ฐ์์๋ ๋ฌธ์ ๊ธฐ๋ฐ์ ์คํธ๋ฆผ๋ ๋ณ๋๋ก ์ ๊ณตํ๋ค.
- InputStream -> Reader, OutputStream -> Writer๋ก ๋ณ๊ฒฝํด ์ฌ์ฉํ ์ ์๋ค.
- ์ค๋ก์ง ๋ฌธ์๋ง ๋ฐ๊ณ ๋ณด๋ผ ์ ์๋๋ก ํนํ๋์ด ์๋ค.
์ ์ถ๋ ฅ ๋์ | ์ ๋ ฅ ์คํธ๋ฆผ | ์ถ๋ ฅ ์คํธ๋ฆผ |
ํ์ผ | FileReader | FileWriter |
๋ฉ๋ชจ๋ฆฌ | CharArrayReader | CharArrayWriter |
ํ๋ก์ธ์ค | PipedReader | PipedWriter |
๋ฌธ์์ด | StringReader | StringWriter |
2). ๋ฌธ์ ๊ธฐ๋ฐ์ ๋ณด์กฐ ์คํธ๋ฆผ
- ์์ค ์คํธ๋ฆผ์ด ๋ฐ์ดํธ ๊ธฐ๋ฐ ์คํธ๋ฆผ(InputStream, OutputStream, FileInputStream, FileOutputStream)์ด๋ฉด์ ์ ์ถ๋ ฅ ๋ฐ์ดํฐ๊ฐ ๋ฌธ์๋ผ๋ฉด ๋ฌธ์ ๋จ์๋ก ์ ์ถ๋ ฅ์ ํ๋ฉฐ ๋ฌธ์์ ์ ์ข ๋ฅ๋ฅผ ์ง์ ํ ์ ์๋ Reader์ Wrtier๋ก ๋ณํํด์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํ ์ ์๋ค.
์ ๋ ฅ ์คํธ๋ฆผ | ์ถ๋ ฅ ์คํธ๋ฆผ | ์ค๋ช |
FilterReader | FilterWriter | ํํฐ๋ฅผ ์ด์ฉํ ์ ์ถ๋ ฅ |
BufferedReader | BufferedWriter | ๋ฒํผ๋ฅผ ์ด์ฉํ ์ ์ถ๋ ฅ |
PushbackReader | X | ๋ค๋ฅธ ์ ๋ ฅ ์คํธ๋ฆผ์ ๋ฒํผ๋ฅผ ์ด์ฉํ์ฌ push back์ด๋ unread์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ถ๊ฐ |
X | PrintWriter | ๋ค๋ฅธ ์ถ๋ ฅ ์คํธ๋ฆผ์ ๋ฒํผ๋ฅผ ์ด์ฉํ์ฌ ๋ค์ํ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๊ธฐ ์ํ ๊ธฐ๋ฅ์ ์ถ๊ฐ |
6. ํ์ค ์คํธ๋ฆผ (System.in, System.out, System.err)
- ์๋ฐ์์๋ ์ฝ์๊ณผ ๊ฐ์ ํ์ค ์ ์ถ๋ ฅ ์ฅ์น๋ฅผ ์ํด System์ด๋ผ๋ ํ์ค ์ ์ถ๋ ฅ ํด๋์ค๋ฅผ ์ ์ํ๊ณ ์๋ค.
- java.lang ํจํค์ง์ ํฌํจ
- ํ์ค ์ ์ถ๋ ฅ ์คํธ๋ฆผ์ ์๋ฐ๊ฐ ์๋์ผ๋ก ์์ฑํ๋ฏ๋ก, ๊ฐ๋ฐ์๋ ๋ณ๋์ ์คํธ๋ฆผ์ ์์ฑํ์ง ์์๋ ์ฌ์ฉํ ์ ์๋ค.
ํด๋์ค ๋ณ์ | ์ ์ถ๋ ฅ ์คํธ๋ฆผ | ์ค๋ช |
System.in | InputStream | ์ฝ์๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅ ๋ฐ๋๋ค. |
System.out | PrintStream | ์ฝ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋ค. |
System.err | PrintStream | ์ฝ์๋ก ๋ฐ์ดํฐ(์๋ฌ)๋ฅผ ์ถ๋ ฅํ๋ค |
ํ์ค ์ ์ถ๋ ฅ์ ๋์ ๋ณ๊ฒฝ
- ์์ ์ธ ๊ฐ์ง ์ ์ถ๋ ฅ ์คํธ๋ฆผ์ ์ฝ์๊ณผ ๊ฐ์ ํ์ค ์ ์ถ๋ ฅ ์ฅ์น๋ฅผ ๋์์ผ๋ก ํ๋ค. ์ด์ ๊ฐ์ ์คํธ๋ฆผ์ ์๋์ System ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ์คํธ๋ฆผ์ ๋์์ ๋ค๋ฅธ ์ ์ถ๋ ฅ ์ฅ์น๋ก ๋ณ๊ฒฝํ ์ ์๋ค.
๋ฉ์๋ | ์ค๋ช |
static void setIn(InputStream in) | ์ ๋ ฅ ์คํธ๋ฆผ์ ๋์์ ์ ๋ฌ๋ ์ ๋ ฅ ์คํธ๋ฆผ์ผ๋ก ๋ณ๊ฒฝํจ |
static void setOut(PrintStream out) | ์ถ๋ ฅ ์คํธ๋ฆผ์ ๋์์ ์ ๋ฌ๋ ์ถ๋ ฅ ์คํธ๋ฆผ์ผ๋ก ๋ณ๊ฒฝํจ |
static void setErr(PrintStream err) | ์ถ๋ ฅ ์คํธ๋ฆผ์ ๋์์ ์ ๋ฌ๋ ์ถ๋ ฅ ์คํธ๋ฆผ์ผ๋ก ๋ณ๊ฒฝํจ |
7. ํ์ผ ์ฝ๊ณ ์ฐ๊ธฐ
1). File
java.io ์์ ์ ๊ณตํ๋ File ํด๋์ค๋ ํ์ผ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ป๋ ๊ธฐ๋ฅ, ํ์ผ ์์ฑ ๋ฐ ์ญ์ ๋ฑ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
ํ์ง๋ง ํ์ผ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฐ๋ ๊ธฐ๋ฅ์ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์ ํ์ผ์ ์ ์ถ๋ ฅ์ ์คํธ๋ฆผ์ ์ฌ์ฉํด์ผ ํ๋ค.
- ์๋๋ File ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์ฝ๋์ด๋ค.
- ๋๋ ํฐ๋ฆฌ ๊ตฌ๋ถ์๋ ์ด์์ฒด์ ๋ง๋ค ์กฐ๊ธ์ฉ ๋ค๋ฅด๋ค. ์๋๋ '\', '/'๋ฅผ ์ฌ์ฉํ ์ ์๊ณ , ์ ๋์ค๋ ๋ฆฌ๋ ์ค๋ '/'๋ฅผ ์ฌ์ฉํ๋ค.
- File.separator ์์๋ฅผ ์ถ๋ ฅํด๋ณด๋ฉด ํด๋น ์ด์์ฒด์ ์์ ์ฌ์ฉํ๋ ๋๋ ํฐ๋ฆฌ ๊ตฌ๋ถ์๋ฅผ ํ์ธํ ์ ์๋ค.
- File ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค๊ณ ํ์ผ์ด๋ ๋๋ ํฐ๋ฆฌ๊ฐ ์์ฑ๋๋ ๊ฒ์ด ์๋๋ฉฐ ํด๋น ๊ฒฝ๋ก๊ฐ ์ ํจํ์ง ์๋๋ผ๋ ์ปดํ์ผ ์๋ฌ๋ ์์ธ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
void file(){
File file = new File("E:\\test.txt");
File file2 = new File("E:/test.txt");
}
2). FileInputStream
- FileInputStream ํด๋์ค๋ ํ์ผ๋ก๋ถํฐ ๋ฐ์ดํธ ๋จ์๋ก ์ฝ์ด ๋ค์ผ ๋ ์ฌ์ฉํ๋ ๋ฐ์ดํธ ๊ธฐ๋ฐ ์ ๋ ฅ ์คํธ๋ฆผ์ด๋ค.
- ๋ฐ์ดํธ ๋จ์๋ก ์ฝ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์ข ๋ฅ์ ํ์ผ์ ์ฝ์ ์ ์๋ค.
- InputStream์ ํ์ ํด๋์ค๋ก ์ฌ์ฉ๋ฒ์ InputStream๊ณผ ๋์ผํ๋ค.
void fileInput(){
try {
// 1 - String ์์ฑ
FileInputStream fileInputStream = new FileInputStream("E:/test.txt");
// 2 - File ๊ฐ์ฒด๋ก ์์ฑ
File file = new File("E:/test.txt");
FileInputStream fileInputStream1 = new FileInputStream(file);
} catch (FileNotFoundException fileNotFoundException) {
fileNotFoundException.printStackTrace();
}
}
3). FileOutputStream
- ๋ฐ์ดํธ ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ํ์ผ์ ์ ์ฅํ ๋ ์ฌ์ฉํ๋ ๋ฐ์ดํธ ๊ธฐ๋ฐ ์ถ๋ ฅ ์คํธ๋ฆผ.
- ๋ฐ์ดํธ ๋จ์๋ก ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ํ์ผ๋ก ์ ์ฅํ ์ ์๋ค.
- OutputStream์ ํ์ ํด๋์ค๋ก ์ฌ์ฉ๋ฒ์ OutputStream๊ณผ ๋์ผํ๋ค.
- ์ฃผ์ํ ์ ์ ํ์ผ์ด ์ด๋ฏธ ์กด์ฌํ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋ฉด ํ์ผ์ ๋ฎ์ด์ฐ๊ฒ ๋๋ฏ๋ก, ๊ธฐ์กด์ ๋ด์ฉ์ ์ฌ๋ผ์ง๊ฒ ๋๋ค.
- ๊ธฐ์กด์ ํ์ผ ๋ด์ฉ ๋์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ ๊ฒฝ์ฐ 3 ๊ณผ๊ฐ์ด FileOutputStream ์์ฑ์์ ๋ ๋ฒ์งธ ๋งค๊ฐ ๊ฐ์ true๋ก ์ฃผ๋ฉด ๋๋ค.
void fileOutput(){
try {
// 1 - String
FileOutputStream outputStream = new FileOutputStream("E:/testOut.txt");
// 2 - File ๊ฐ์ฒด ์ฌ์ฉ
File file = new File("E:/testOut.txt");
FileOutputStream outputStream1 = new FileOutputStream(file);
// 3 - ๋ฎ์ด์ฐ์ง ์๊ณ ๋ฐ์ดํฐ ์ถ๊ฐ(true)
FileOutputStream outputStream2 = new FileOutputStream("E:/testOut.txt", true);
} catch (FileNotFoundException fileNotFoundException) {
fileNotFoundException.printStackTrace();
}
}
4). FileReader/FileWriter
- ๋ฌธ์ ๊ธฐ๋ฐ ์คํธ๋ฆผ
- ๋ฌธ์ ๋จ์๋ก ์ฝ๊ณ /์ ์ฅํ๊ธฐ ๋๋ฌธ์ ํ ์คํธ๊ฐ ์๋ ๊ทธ๋ฆผ, ์ค๋์ค, ๋น๋์ค ๊ฐ์ ํ์ผ์ ์ฝ๊ฑฐ๋ ์ ์ฅํ ์ ์๋ค.
- FileReader -> Reader์ ํ์ ํด๋์ค๋ก Reader์ ์ฌ์ฉ๋ฒ ๋์ผ
- FileWriter -> Writer์ ํ์ ํด๋์ค๋ก Writer์ ์ฌ์ฉ๋ฒ ๋์ผ
โ๏ธ Refer.
http://www.tcpschool.com/java/java_io_file
์ด๊ฒ์ด ์๋ฐ๋ค
'Live-Study' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[12์ฃผ์ฐจ] ์ ๋ ธํ ์ด์ (0) | 2021.02.19 |
---|---|
[11์ฃผ์ฐจ] Enum (0) | 2021.02.19 |
[10์ฃผ์ฐจ] ๋ฉํฐ์ฐ๋ ๋ ํ๋ก๊ทธ๋๋ฐ (0) | 2021.02.19 |
[9์ฃผ์ฐจ] ์์ธ ์ฒ๋ฆฌ (0) | 2021.02.19 |
[8์ฃผ์ฐจ] ์ธํฐํ์ด์ค (0) | 2021.02.19 |