Java

문자 단위 입출력 스트림

yanJuicy 2024. 9. 26. 00:38
반응형

Reader

문자 단위 입력 스트림의 최상위 추상 클래스다

많은 추상 메소드가 선언되어 있고 이를 하위 스트림이 상속받아 구현한다

주요 하위 클래스는 다음과 같다

클래스 설명
FileReader 파일에서 문자 단위로 읽는 스트림 클래스
InputStreamReader 바이트 단위로 읽은 자료를 문자로 변환해주는 보조 스트림 클래스
BufferedReader 문자로 읽을 때 배열을 제공하여 한꺼번에 읽을 수 있는 기능을 제공하는 보조 스트림

주요 메소드는 다음과 같다

메서드 설명
int read() 파일로부터 한 문자를 읽는다. 읽은 문자를 반환한다
int read(char[] buf) 파일로부터 buf 배열에 문자를 읽는다
int read(char[] buf, int off, int len) 파일로부터 buf 배열의 off 위치로부터 len 개수만큼의 문자를 읽는다.
void close() 입력 스트림과 연결된 대상 리소스를 닫는다

FileReader

파일에서 문자를 읽는 예제

import java.io.FileReader;
import java.io.IOException;

public class FileReaderTest {

    public static void main(String[] args) {

        try (FileReader fr = new FileReader("reader.txt")) {
            int i;
            while ((i = fr.read()) != -1) {
                System.out.println((char) i);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

문자 단위이므로 byte 입출력과 달리 한글도 읽을 수 있다

reader.txt 내용은 다음과 같다

안녕하세요

실행 결과는 다음과 같다

image

Writer

문자 단위 출력 스트림의 최상위 추상 클래스다

많은 추상 메소드가 선언되어 있고 하위 스트림이 상속받아 구현한다

주요 하위 클래스는 다음과 같다

클래스 설명
FileWriter 파일에서 문자 단위로 출력하는 스트림 클래스
OutputStreamWriter 바이트 단위의 자료를 문자로 변환해 출력해주는 보조 스트림 클래스
BufferedWriter 문자로 쓸 때 배열을 제공하여 한꺼번에 쓸 수 있는 기능을 제공하는 보조 스트림

주요 메소드는 다음과 같다

메서드 설명
int write(int c) 한 문자를 파일에 출력한다
int write(char[] buf) 문자 배열 buf의 내용을 출력한다
int write(char[] buf, int off, int len) 문자 배열 buf의 off위치에서부터 len 개수의 문자를 출력한다
int write(String str) 문자열 str을 출력한다
int write(String str, int off, int len) 문자열 str의 off번째 문자로부터 len 개수만큼 출력한다
int flush() 출력하기 전에 자료가 있는 공간(출력 버퍼)을 비워 출력한다
void close() 스트림과 연결된 리소스를 닫고 출력 버퍼도 비운다

FileWriter

파일에 문자를 쓰는 예제다

import java.io.FileWriter;
import java.io.IOException;

public class FileWriterTest {

    public static void main(String[] args) {

        try (FileWriter fw = new FileWriter("writer.txt")) {
            fw.write('A');
            char buf[] = {'B', 'C', 'D', 'E', 'F', 'G'};

            fw.write(buf);
            fw.write("안녕하세요. 잘 써지네요");
            fw.write(buf, 1, 2);
            fw.write("65");
        } catch (IOException e) {
            e.printStackTrace();
        }

        System.out.println("출력 완료");
    }

}

결과는 다음과 같다

image
반응형

'Java' 카테고리의 다른 글

표준 입출력 스트림  (0) 2024.09.19
바이트 단위 입출력 스트림  (0) 2024.09.12
IO Stream  (0) 2024.09.05
wait(), notify()를 활용한 동기화  (0) 2024.08.29
로그 남기기  (0) 2024.08.26