I/O(Input/Output)๋ ํ๋ก๊ทธ๋จ๊ณผ ์ธ๋ถ ์ธ๊ณ ๊ฐ์ ๋ฐ์ดํฐ ์ด๋์ ์๋ฏธํ๋ค.
- ํค๋ณด๋ ์ ๋ ฅ
- ํ์ผ ์ฝ๊ธฐ/์ฐ๊ธฐ
- ๋คํธ์ํฌ ํต์
Java์์๋ ์ด ๋ชจ๋ ์์ ์ ์คํธ๋ฆผ(Stream) ๊ธฐ๋ฐ์ผ๋ก ์ฒ๋ฆฌํ๋ค.
1. ์คํธ๋ฆผ(Stream)์ด๋?
์คํธ๋ฆผ์ ๋ฐ์ดํฐ๊ฐ ํ๋ฅด๋ ํต๋ก๋ค.
Java I/O๋ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฐฉํฅ์ผ๋ก ํ๋ฅด๊ฒ ์ฒ๋ฆฌํ๋ค.
- ์ ๋ ฅ ์คํธ๋ฆผ → ์ธ๋ถ → ํ๋ก๊ทธ๋จ
- ์ถ๋ ฅ ์คํธ๋ฆผ → ํ๋ก๊ทธ๋จ → ์ธ๋ถ
2. ๋ฐ์ดํธ ์คํธ๋ฆผ vs. ๋ฌธ์ ์คํธ๋ฆผ
Java I/O๋ ํฌ๊ฒ ๋ ๊ณ์ด๋ก ๋๋๋ค.
๋ฐ์ดํธ ์คํธ๋ฆผ (1 byte ๋จ์)
๋ฌธ์ ์คํธ๋ฆผ (2 byte, ๋ฌธ์ ๋จ์)
1) ๋ฐ์ดํธ ์คํธ๋ฆผ
- ๋ชจ๋ ์ข ๋ฅ์ ํ์ผ ์ฒ๋ฆฌ ๊ฐ๋ฅ
- ์ด๋ฏธ์ง, ๋์์, ๋ฐ์ด๋๋ฆฌ ํ์ผ ๋ฑ
๋ํ ํด๋์ค
- InputStream
- OutputStream
- FileInputStream
- FileOutputStream
์์
FileInputStream fis = new FileInputStream("a.txt");
int data = fis.read();
fis.close();
2) ๋ฌธ์ ์คํธ๋ฆผ
- ํ ์คํธ ํ์ผ ์ฒ๋ฆฌ์ ์ ํฉ
- ๋ด๋ถ์ ์ผ๋ก ๋ฌธ์ ์ธ์ฝ๋ฉ ์ฒ๋ฆฌ
๋ํ ํด๋์ค
- Reader
- Writer
- FileReader
- FileWriter
์์
FileReader fr = new FileReader("a.txt");
int ch = fr.read();
fr.close();
3. ๋ฒํผ ์คํธ๋ฆผ
๊ธฐ๋ณธ ์คํธ๋ฆผ์ ํ ๊ธ์์ฉ ์ฒ๋ฆฌํ๋ฏ๋ก ๋นํจ์จ์ ์ด๋ค.
๋ฒํผ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฑ๋ฅ์ด ํฌ๊ฒ ํฅ์๋๋ค.
๋ํ ํด๋์ค
- BufferedInputStream
- BufferedOutputStream
- BufferedReader
- BufferedWriter
์์
BufferedReader br = new BufferedReader(new FileReader("a.txt"));
String line = br.readLine();
br.close();
๋ฒํผ๋ ๋ด๋ถ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋๊ณ ํ ๋ฒ์ ๋ฌถ์ด์ ์ฒ๋ฆฌํ๋ค.
4. try-with-resources
์ ์ถ๋ ฅ์์๋ ์์ ํด์ ๊ฐ ์ค์ํ๋ค.
try (BufferedReader br = new BufferedReader(new FileReader("a.txt"))) {
String line = br.readLine();
}
์๋์ผ๋ก close() ํธ์ถ๋๋ค.
5. ํ์ผ ํด๋์ค
ํ์ผ ์ ๋ณด ๊ด๋ฆฌ
File file = new File("a.txt");
file.exists();
file.length();
file.delete();
ํ์ผ ์์ฑ, ์ญ์ , ๊ฒฝ๋ก ํ์ธ ๋ฑ์ ์ฌ์ฉ๋๋ค.
6. ์ ์ถ๋ ฅ ํ๋ฆ ๊ตฌ์กฐ ์ ๋ฆฌ
File → FileInputStream → BufferedInputStream
๋๋
File → FileReader → BufferedReader
์ ์ถ๋ ฅ ํด๋์ค๋ ๊ณ์ธต์ ์ผ๋ก ์ฐ๊ฒฐํด์ ์ฌ์ฉํ๋ค.
์ด๋ฅผ ์คํธ๋ฆผ ์ฒด์ธ(Stream Chain)์ด๋ผ๊ณ ํ๋ค.
7. NIO(New I/O) ๊ฐ๋จ ์ ๋ฆฌ
Java 1.4 ์ดํ ๋์
- Channel ๊ธฐ๋ฐ
- Buffer ๊ธฐ๋ฐ
- ๋น๋๊ธฐ ์ฒ๋ฆฌ ๊ฐ๋ฅ
- ์ฑ๋ฅ ํฅ์
๋ํ ํด๋์ค
- Path
- Files
- ByteBuffer
- FileChannel
8. I/O์์ ์ค์ํ ๊ฐ๋
- ์คํธ๋ฆผ์ ๋จ๋ฐฉํฅ
- ๋ฐ๋์ close() ํ์
- ๋ฒํผ ์ฌ์ฉ์ด ์ฑ๋ฅ์ ์ค์
- ์์ธ ์ฒ๋ฆฌ ํ์(IOException)
- ๋ฌธ์ ์ธ์ฝ๋ฉ ๊ณ ๋ ค ํ์
'Back-End > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| 13. ์์ธ ์ฒ๋ฆฌ(Exception Handling) (0) | 2026.02.12 |
|---|---|
| 12. ๋ด๋ถ ํด๋์ค, ๋๋ค์, ์คํธ๋ฆผ (0) | 2026.02.12 |
| 11. ์ปฌ๋ ์ ํ๋ ์์ํฌ(Collection Framework) (0) | 2026.02.12 |
| 10. ๊ธฐ๋ณธ ํด๋์ค(Core Class) (0) | 2026.02.12 |
| 09. ์ธํฐํ์ด์ค(Interface) (0) | 2026.02.11 |