프로그래밍 언어/JAVA

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

나는 자바를 좋아합니다.