5.5 KiB
5.5 KiB
자바 IO (Input/Output) 관련 클래스 및 주요 메서드 정리
자바 IO는 데이터를 스트림(Stream) 기반으로 읽고 쓰는 전통적인 입출력 API다.
주로 파일, 콘솔, 네트워크, 메모리 등과 데이터를 주고받는 데 사용된다.
1. InputStream (바이트 입력 스트림)
| 메서드 | 설명 |
|---|---|
read() |
1바이트를 읽고 정수(0~255)로 반환, 끝이면 -1 반환 |
read(byte[] b) |
바이트 배열에 데이터를 읽음 |
available() |
읽을 수 있는 바이트 수 반환 |
close() |
스트림 닫기 |
주요 하위 클래스:
FileInputStream(파일에서 바이트 읽기)ByteArrayInputStream(바이트 배열에서 읽기)BufferedInputStream(버퍼링으로 성능 향상)
2. OutputStream (바이트 출력 스트림)
| 메서드 | 설명 |
|---|---|
write(int b) |
1바이트 쓰기 |
write(byte[] b) |
바이트 배열을 스트림에 쓰기 |
flush() |
버퍼에 있는 데이터를 즉시 출력 |
close() |
스트림 닫기 |
주요 하위 클래스:
FileOutputStream(파일에 바이트 쓰기)ByteArrayOutputStream(바이트 배열에 쓰기)BufferedOutputStream(버퍼링으로 성능 향상)
3. Reader (문자 입력 스트림)
| 메서드 | 설명 |
|---|---|
read() |
문자 하나 읽기 |
read(char[] cbuf) |
문자 배열에 읽기 |
close() |
스트림 닫기 |
주요 하위 클래스:
FileReader(파일에서 문자 읽기)BufferedReader(버퍼링으로 성능 향상)StringReader(문자열에서 읽기)
4. Writer (문자 출력 스트림)
| 메서드 | 설명 |
|---|---|
write(int c) |
문자 하나 쓰기 |
write(char[] cbuf) |
문자 배열을 스트림에 쓰기 |
flush() |
버퍼 비우기 |
close() |
스트림 닫기 |
주요 하위 클래스:
FileWriter(파일에 문자 쓰기)BufferedWriter(버퍼링으로 성능 향상)StringWriter(문자열에 쓰기)
5. File 클래스 (파일 및 디렉토리 관리)
| 메서드 | 설명 |
|---|---|
exists() |
파일이 존재하는지 확인 |
createNewFile() |
새 파일 생성 |
delete() |
파일 삭제 |
mkdir() |
새 디렉토리 생성 |
listFiles() |
디렉토리 내 파일 목록 반환 |
6. BufferedReader와 BufferedWriter (성능 향상)
| 메서드 | 설명 |
|---|---|
readLine() |
한 줄씩 읽기 (BufferedReader 전용) |
write(String s) |
문자열 출력 (BufferedWriter 전용) |
flush() |
버퍼 비우기 |
close() |
스트림 닫기 |
자바 IO 쉽게 설명하기
자바의 IO는 데이터를 스트림(Stream) 기반으로 입출력하는 방식이다.
즉, 한 번에 하나의 데이터(바이트 or 문자)를 순차적으로 처리하는 구조다.
1. 파일에서 데이터 읽기 (FileReader)
FileReader reader = new FileReader("example.txt");
int data;
while ((data = reader.read()) != -1) {
System.out.print((char) data);
}
reader.close();
read()→ 한 글자씩 읽음close()→ 파일 닫기
2. 파일에 데이터 쓰기 (FileWriter)
FileWriter writer = new FileWriter("example.txt");
writer.write("Hello, Java IO!");
writer.close();
write()→ 파일에 문자열 저장close()→ 파일 닫기
3. 파일을 빠르게 읽기 (BufferedReader)
BufferedReader br = new BufferedReader(new FileReader("example.txt"));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
readLine()→ 한 줄씩 읽기 (효율적)BufferedReader→ 버퍼링으로 속도 향상
4. 파일을 빠르게 쓰기 (BufferedWriter)
BufferedWriter bw = new BufferedWriter(new FileWriter("example.txt"));
bw.write("Buffered Writer 사용!");
bw.newLine(); // 줄바꿈
bw.close();
newLine()→ 줄바꿈 추가BufferedWriter→ 속도 향상
5. 바이트 단위 파일 복사 (FileInputStream, FileOutputStream)
FileInputStream fis = new FileInputStream("input.txt");
FileOutputStream fos = new FileOutputStream("output.txt");
int data;
while ((data = fis.read()) != -1) {
fos.write(data);
}
fis.close();
fos.close();
read()→ 1바이트씩 읽기write()→ 1바이트씩 출력
6. 문자 단위 파일 복사 (FileReader, FileWriter)
FileReader fr = new FileReader("input.txt");
FileWriter fw = new FileWriter("output.txt");
int data;
while ((data = fr.read()) != -1) {
fw.write(data);
}
fr.close();
fw.close();
FileReader→ 문자 기반 파일 읽기FileWriter→ 문자 기반 파일 쓰기
정리
자바 IO는 스트림 기반으로 데이터를 읽고 쓰는 방식을 제공한다.
- 바이트 단위 (
InputStream,OutputStream) → 이미지, 동영상, 바이너리 파일 처리 - 문자 단위 (
Reader,Writer) → 텍스트 파일 처리 - 버퍼링 (
BufferedReader,BufferedWriter) → 성능 최적화
즉, IO 스트림을 적절히 활용하면 다양한 입출력 작업을 쉽게 수행할 수 있다!