728x90
java.io 패키지 정의
- 입출력을(IO : Input/Output) 기능을 제공하는 자바 표준 패키지
- 다음 모든 걸 담당하는 클래스와 인터페이스의 모음
- 파일 읽기/쓰기
- 콘솔 입력/출력
- 네트워크 데이터 스트림 처리
- 메모리 스트림 처리
java.io 패키지의 주요 역할
역할 | 설명 |
파일 입출력 | 텍스트 파일, 바이너리 파일 읽고 쓰기 |
콘솔 입출력 | 키보드 입력 및 화면 출력 |
스트림 처리 | 데이터를 순차적으로 처리하는 통로 제공 |
메모리 입출력 | 바이트 배열, 문자열 등 메모리 기반 입출력 |
객체 직렬화 | 객체를 파일에 저장하거나 전송할 수 있도록 변환 |
java.io 패키지의 주요 클래스 분류
1. 바이트 스트림 클래스 (1바이트 단위 처리)
종류 | 읽기용 | 쓰기용 |
기본 스트림 | InputStream | OutputStream |
파일 처리 | FileInputStream | FileOutputStream |
버퍼 사용 | BufferedInputStream | BufferedOutputStream |
메모리 처리 | ByteArrayInputStream | ByteArrayOutputStream |
필터링 | FilterInputStream | FilterOutputStream |
2. 문자 스트림 클래스(2바이트 유니코드 문자 처리)
종류 | 읽기용 | 쓰기용 |
기본 스트림 | Reader | Writer |
파일 처리 | FileReader | FileWriter |
버퍼 사용 | BufferedReader | BufferedWriter |
메모리 처리 | CharArrayReader | CharArrayWriter |
필터링 | FilterReader | FilterWriter |
3. 객체 직렬화 및 기타 유틸리티
클래스 | 설명 |
ObjectInputStream / ObjectOutputStream | 객체를 읽고/쓰기 (직렬화) |
Serializable | 객체를 저장/전송 가능하게 만드는 인터페이스 |
PrintStream | println(), printf() 등 텍스트 출력 지원 |
DataInputStream / DataOutputStream | 기본형 데이터(byte, int 등) 입출력 지원 |
File | 파일 자체의 경로, 크기, 존재 여부 등을 다룸 (입출력 아님!) |
IOException | IO 관련 예외의 최상위 예외 클래스 |
java.io 패키지 클래스 예시 요약
클래스명 | 기능 |
File | 파일 및 디렉토리의 정보 확인, 생성, 삭제 등 |
FileReader / FileWriter | 텍스트 파일 문자 기반 입출력 |
FileInputStream / FileOutputStream | 이미지, 영상 등 바이너리 파일 입출력 |
BufferedReader / BufferedWriter | 고속 텍스트 파일 입출력 |
ObjectOutputStream / ObjectInputStream | 객체 저장 및 복원 |
PrintStream | 콘솔 출력 (System.out이 이것!) |
IOException | 모든 IO 관련 예외의 부모 예외 |
java.io 의 핵심 특징
특징 | 설명 |
계층 구조 | 상위 추상 클래스(InputStream, Reader 등)로부터 다양한 클래스가 파생됨 |
단방향 스트림 | 대부분 입력 또는 출력 중 한 방향만 처리 (양방향 아님) |
스트림 기반 | 데이터는 한 방향으로 "흐르는" 구조 |
느리면 버퍼 사용 | BufferedXXX 계열로 성능 향상 |
예외 처리 필요 | 모든 IO 작업은 IOException 처리 필수 |
예시1. 텍스트 파일 한 줄씩 읽기
import java.io.*;
public class ReadFile {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new FileReader("test.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println("읽은 줄: " + line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
예시2. 파일 존재 여부 확인 (File 클래스)
import java.io.File;
public class FileCheck {
public static void main(String[] args) {
File file = new File("example.txt");
if (file.exists()) {
System.out.println("파일 있음");
} else {
System.out.println("파일 없음");
}
}
}
728x90
'언어(Language) > Java' 카테고리의 다른 글
[Java] System 클래스 (2) | 2025.06.08 |
---|---|
[Java] Number 클래스 (1) | 2025.06.08 |
[Java] Wrapper Class (포장 클래스) (1) | 2025.06.08 |
[Java] StringBuffer 클래스 (2) | 2025.06.08 |
[Java] java.lang 패키지 (1) | 2025.06.08 |