FileWriter를 이용한 텍스트 파일 쓰기
FileWriter를 이용하여 텍스트를 파일에 저장하는 방법을 알아봅시다.
파일 출력 스트림 생성
FileWriter fout = new FileWriter("c:\\Temp\\test.txt");
FileWriter의 생성자는 c:\Temp\test.txt 파일을 열어 스트림과 연결합니다. 파일이 없는 경우 빈 파일을 생성하며, 이미 파일이 있는 경우 파일이 있는 경우 파일 내용을 지우고 파일의 처음부터 쓸 준비를 합니다.
파일 쓰기
fout 스트림의 write() 메서드를 이용하면 문자 단위로 파일에 저장할 수 있습니다, 다음은 'A'를 파일에 쓰는 코드입니다.
fout.write('A'); // 문자 'A'를 파일에 저장
write()를 다음과 같이 이용하면 한 번에 한 블록씩 쓸 수 있습니다.
char [] buf = new char [1024];
fout.write(buf, 0, buf.length); // buf[] 배열의 처음부터 배열 크기(1024개 문자)만큼 쓰기
스트림 닫기
텍스트를 모두 파일에 저장하였으면 close()를 호출하여 스트림을 닫습니다. 스트림을 닫으면 연결된 파일도 닫힙니다.
fout.close(); // 스트림을 닫는다. 더 이상 스트림에 기록할 수 없다.
FileWriter와 OutStreamReader의 생성자
| 생성자 | 설명 |
| OutputStreamWriter(OutputStream out) | out에 출력하는 기본 문자 집합의 OutputStreamWriter 생성 |
| OutputStreamWriter (OutputStream out, Charset cs) |
out에 출력하는 cs 문자 집합의 OutputStreamWriter 생성 |
| OutputStreamWriter (OuputStream out, String charsetName) |
charsetName 문자 집합의 OutputStreamWriter 생성 |
| FileWriter(File file) | file에 데이터를 저장할 FileWriter 생성 |
| FileWriter(String name) | name 파일에 데이터를 저장할 FileWriter 생성 |
| FileWriter (File file, boolean append) |
FileWriter를 생성하며 append가 true이면 파일의 마지막부터 데이터를 저장 |
| FileWriter (String name, boolean append) |
FileWriter를 생성하며 append가 true이면 파일의 마지막부터 데이터를 저장 |
FileWriter와 OutpusStreamWriter의 주요 메소드
| 메소드 | 설명 |
| void write(int c) | c를 char로 변환하여 한 개의 문자 출력 |
| void write(String str) | 문자열 str 출력 |
| void write(String str, int off, int len) | 인덱스 off부터 len개의 문자를 str 문자열에서 출력 |
| void write(char[] cbuf, int off, int len) | 인덱스 off부터 len개의 문자를 배열 cbuf에서 출력 |
| void flush() | 스트림에 남아있는 데이터 모두 출력 |
| string getEncoding() | 스트림이 사용하는 문자 집합의 이름 리턴 |
| void close() | 출력 스트림을 닫고 관련된 시스템 자원 해제 |
키보드 입력을 파일로 저장하기
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class FileWriterEx {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
FileWriter fout = null;
int c;
try {
fout = new FileWriter("c:\\Temp\\test.txt"); // 파일과 연결된 출력 문자 스트림 생성
while (true) {
String line = scanner.nextLine(); // 빈칸을 포함하여 한 줄 읽기
if (line.length() == 0) // 한 줄에 <Enter>키만 입력한 경우
break;
fout.write(line, 0, line.length()); // 읽은 문자열을 파일에 저장
fout.write("\r\n", 0, 2); // 한 줄 띄기 위해 \r\n을 파일에 저장
}
fout.close();
} catch (IOException e) {
System.out.println("입출력 오류");
}
scanner.close();
}
}
실행 결과
I love Java
나는 자바를 좋아합니다.

'프로그래밍 언어 > JAVA' 카테고리의 다른 글
| FileInputStream을 이용한 바이너리 파일 읽기 (6) | 2025.04.29 |
|---|---|
| 바이트 스트림 클래스와 FileOutputStream를 이용한 바이너리 파일 쓰기 (1) | 2025.04.25 |
| 문자 집합과 InputStreamReader를 이용한 텍스트 파일 읽기 (1) | 2025.04.20 |
| FileReader (1) | 2025.04.17 |
| 자바의 입출력 스트림 (1) | 2025.04.14 |