Java OutputStream: 핵심 개념, 메서드, FileOutputStream 실전 예제
Java OutputStream 클래스
Java의 OutputStream 기초, 주요 메서드, FileOutputStream을 활용한 실전 예제를 알아봅니다.
java.io 패키지에 있는 OutputStream 클래스는 출력 대상으로 향하는 바이트 스트림을 나타내는 추상 슈퍼클래스입니다. 추상 클래스이므로 직접 인스턴스화할 수 없으며, 실제 I/O 연산을 수행하는 구체적인 서브클래스에 의존해야 합니다.
OutputStream의 주요 서브클래스
OutputStream을 확장하는 가장 일반적으로 사용되는 서브클래스들입니다:
FileOutputStream - 바이트를 파일에 직접 씁니다.
ByteArrayOutputStream - 확장 가능한 배열에 바이트를 캡처하여 메모리 내 연산에 유용합니다.
ObjectOutputStream - Java 객체를 바이트 스트림으로 직렬화합니다.
각 서브클래스는 별도 튜토리얼에서 자세히 다룹니다.
OutputStream 인스턴스 생성하기
OutputStream 인스턴스를 생성하려면 패키지를 임포트하고 구체적인 서브클래스를 인스턴스화합니다:
// FileOutputStream 인스턴스화
OutputStream out = new FileOutputStream("example.txt");
OutputStream은 추상 클래스이므로 항상 서브클래스를 사용해야 합니다. 위 예제는 example.txt에 쓰는 스트림을 생성하는 방법을 보여줍니다.
팁: FileOutputStream을 다른 서브클래스(예: ByteArrayOutputStream)로 대체하여 다른 대상을 타겟팅할 수 있습니다.
OutputStream의 핵심 메서드
추상 클래스는 서브클래스가 구현해야 하는 몇 가지 필수 메서드를 선언합니다:
write(int b) - 단일 바이트를 스트림에 씁니다.
write(byte[] b) - 전체 바이트 배열을 씁니다.
flush() - 버퍼링된 데이터를 강제로 출력합니다.
close() - 스트림과 관련된 시스템 자원을 해제합니다.
예제: FileOutputStream으로 텍스트 파일에 쓰기
아래는 FileOutputStream을 사용하여 텍스트 한 줄을 output.txt에 쓰는 완전한 실행 가능 프로그램입니다:
import java.io.FileOutputStream;
import java.io.OutputStream;
public class Main {
public static void main(String[] args) {
String data = "This is a line of text inside the file.";
try (OutputStream out = new FileOutputStream("output.txt")) {
byte[] dataBytes = data.getBytes();
out.write(dataBytes);
System.out.println("Data written to output.txt");
} catch (Exception e) {
e.printStackTrace();
}
}
}
시연된 핵심 포인트:
getBytes()로 String을 바이트 배열로 변환.
write()로 바이트 배열을 스트림에 쓰기.
- try-with-resources 블록으로 자동 스트림 종료(
close() 호출).
실행 후 output.txt에는 다음 내용이 들어있습니다:
This is a line of text inside the file.
OutputStream에 대한 더 깊은 탐구를 위해 공식 Java 문서를 참조하세요.
Java OutputStream (공식 Java 문서)