Java FileOutputStream 클래스 종합 가이드
Java FileOutputStream 클래스
이 튜토리얼은 Java FileOutputStream 클래스의 생성자, 핵심 메서드, 실전 예제를 다룹니다.
java.io 패키지의 FileOutputStream 클래스는 파일에 원시 바이트 데이터를 쓸 수 있게 합니다. 추상 OutputStream 클래스를 확장하며 이진 파일 연산에 필수적입니다.
FileOutputStream 생성하기
FileOutputStream을 생성하려면 java.io에서 클래스를 임포트하고 파일 경로나 File 객체로 인스턴스화합니다.
1. 파일 경로 사용
// append 플래그 포함
FileOutputStream output = new FileOutputStream(String path, boolean append);
// append 플래그 없음
FileOutputStream output = new FileOutputStream(String path);
append 불리언은 데이터를 파일 끝에 추가(true)할지 기존 콘텐츠를 덮어쓸지(false) 결정합니다.
2. File 객체 사용
FileOutputStream output = new FileOutputStream(File fileObject);
이 생성자는 fileObject가 나타내는 파일과 스트림을 연결합니다.
FileOutputStream의 핵심 메서드
FileOutputStream은 OutputStream에서 상속받은 여러 메서드를 구현하며, 각 메서드는 바이트 연산에 특화되어 있습니다.
write()
write(int b) - 단일 바이트를 씁니다.
write(byte[] b) - 전체 바이트 배열을 씁니다.
write(byte[] b, int off, int len) - off 오프셋부터 b의 len 바이트를 씁니다.
예제: 텍스트를 파일에 쓰기
import java.io.FileOutputStream;
public class Main {
public static void main(String[] args) {
String data = "This is a line of text inside the file.";
try {
FileOutputStream output = new FileOutputStream("output.txt");
byte[] array = data.getBytes();
output.write(array);
output.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
이 프로그램을 실행하면 위에 표시된 문장이 들어있는 output.txt가 생성됩니다. getBytes() 메서드는 문자열을 UTF-8 바이트 표현으로 변환합니다.
flush()
flush() 메서드는 버퍼링된 바이트를 즉시 파일에 쓰도록 강제합니다. 스트림을 닫기 전에 데이터 지속성을 보장해야 할 때 유용합니다.
import java.io.FileOutputStream;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
FileOutputStream out = new FileOutputStream("flush.txt");
String data = "This is demo of flush method";
out.write(data.getBytes());
out.flush();
out.close();
}
}
close()
close() 호출 후 스트림은 더 이상 사용할 수 없습니다. 시스템 자원을 해제하고 파일 핸들이 제대로 해제되도록 합니다.
추가 FileOutputStream 메서드
| 메서드 | 설명 |
finalize() | 가비지 컬렉터에 의해 호출되어 close()가 호출되도록 보장합니다. |
getChannel() | 고급 파일 연산을 위한 연관된 FileChannel을 반환합니다. |
getFD() | 기본 파일 디스크립터를 조회합니다. |
더 깊은 통찰을 위해 공식 Java FileOutputStream 문서를 참조하세요.