파일을 생성, 읽기, 쓰거나 외부 장치와 통신하는 자바 입출력(I/O: Input/Output) 스트림 구조와 파일 관리 기술을 다룹니다.
1. 입출력 스트림 용어 사전 (Glossary)
- Stream (스트림): 데이터가 단방향(FIFO)으로 연속적으로 이동하는 가상의 통로입니다.
- Byte Stream: 1byte 단위로 바이너리 데이터(이미지, 동영상, 엑셀 파일 등)를 입출력하는 스트림입니다. (
InputStream,OutputStream) - Character Stream: 2byte(유니코드) 단위로 텍스트 문서 파일만 전용으로 처리하는 스트림입니다. (
Reader,Writer) - Buffered Stream: 입출력 횟수를 줄이기 위해 메모리에 8KB 가량의 버퍼(Buffer)를 형성하여 입출력 성능을 10배 이상 높이는 보조 스트림입니다. (
BufferedReader,BufferedWriter)
2. BufferedReader 기반 고속 텍스트 파일 읽기 코드
import java.io.*;
public class FastFileReader {
public static void main(String[] args) {
File targetFile = new File("data.txt");
// try-with-resources 구문으로 자동으로 close() 처리
try (BufferedReader br = new BufferedReader(new FileReader(targetFile))) {
String line;
System.out.println("=== [파일 텍스트 출력] ===");
while ((line = br.readLine()) != null) { // 한 줄씩 텍스트 읽기
System.out.println(line);
}
} catch (FileNotFoundException e) {
System.err.println("오류: 지정한 파일이 존재하지 않습니다.");
} catch (IOException e) {
System.err.println("파일 입출력 예외 발생: " + e.getMessage());
}
}
}
3. 자주 묻는 질문 (Q&A)
Q. FileWriter로 파일에 텍스트를 쓸 때 기존 내용을 덮어쓰지 않고 뒤에 덧붙이려면(Append)?
A. 생성자의 두 번째 파라미터로 true를 전달하면 됩니다. (new FileWriter("file.txt", true); 사용)