문자 입출력 스트림
은 오직 문자만을 입출력할 목적으로 사용되는 스트림입니다. 그렇기 때문에 사용 방법은 바이트 스트림과 동일하지만 입출력 단위가 바이트가 아닌 문자라는 차이점만 있습니다.
Write
는 문자 출력 스트림의 최상위 클래스이자 추상 클래스입니다. 이 클래스를 상속해 FileWriter
, BufferedWriter
, PrintWriter
, OutputWriter
가 있습니다.
Write
클래스는 문자 출력 스트림 클래스에서 공통적으로 사용되는 메소드들을 가지고 있습니다.
메소드 | 설명 |
---|---|
write(int c) | 문자 c를 출력 |
write(char[] c) | 배열 c의 모든 문자 c를 출력 |
write(char[] c, int off, int len) | 배열 c의 c[off]부터 len개 출력 |
write(String str) | 문자열 str 출력 |
write(String str, int off, int len) | 문자열 str의 off부터 len개 출력 |
flush() | 버퍼에 잔류한 모든 문자 출력 |
close() | 출력 스트림을 종료하고 메모리 해제 |
다음은 문자 출력 스트림을 이용해서 문자 배열과 문자열을 출력하는 예제코드입니다.
public class Main {
public static void main(String[] args) throws IOException {
Writer writer = new FileWriter("test2.db");
char[] c = {'A', 'B', 'C'};
writer.write(c);
String str = "Hello";
writer.write(str);
writer.flush();
writer.close();
}
}
위 코드의 실행 결과로 프로젝트 디렉토리 내에 test2.db
가 생성되었을 것 입니다.
Reader
는 문자 입력 스트림의 최상위 클래스이자 추상 클래스입니다. 이 클래스를 상속한 FileReader
, BufferedReader
, InputStreamReader
가 있습니다.
Reader
클래스에는 문자 입력 스트림에서 공통적으로 사용되는 메소드들이 정의되어 있습니다.
메소드 | 설명 |
---|---|
int read() | 1개의 문자를 읽고 반환 |
int read(char[] c) | 읽은 문자들을 배열 c에 저장하고 읽은 문자 개수 반환 |
void close() | 입력 스트림을 종료하고 메모리 해제 |
다음 코드는 위에서 만들었던 test2.db
를 한 개씩 읽고 출력하는 예제입니다.
public class Main {
public static void main(String[] args) throws IOException {
Reader reader = new FileReader("test2.db");
while(true) {
int data = reader.read();
if (data == -1) {
break;
}
else {
System.out.print((char) data);
}
}
reader.close();
}
}