문자 기반 입력 스트림의 최상위 클래스로 추상 클래스이다.
모든 문자 기반 입력 스트림은 이 클래스를 상속받아서 만들어진다.
입력 스트림으로부터 한 개의 문자(2바이트)를 읽고 4바이트 int 타입으로 리턴한다. 리턴된 4바이트 중 끝에 있는 2바이트에 문자 데이터가 들어 있다.
read()
메소드가 리턴한 int
값을 char
타입으로 변환하면 읽은 문자를 얻을 수 있다.char charData = (char) read();
-1
을 리턴한다.Reader reader = new FileReader("C:/test.txt");
int readData;
while ((readData = reader.read()) != -1) {
char charData = (char) readData;
}
입력 스트림으로부터 매개값으로 주어진 문자 배열의 길이만큼 문자를 읽고 배열에 저장한다. 그리고 읽은 문자 수를 리턴한다.
-1
을 리턴한다. Reader reader = new FileReader("C:/test.txt");
int readCharNo;
char[] cbuf = new char[2];
while ((readCharNo = reader.read(cbuf)) != -1) { ... }
입력 스트림으로부터 100개의 문자가 들어온다면 read()
메소드는 100번을 루핑해서 읽어들여야 한다. 그러나 read(char[] cbuf)
메소드는 한 번 읽을 때 주어진 배열 길이만큼 읽기 때문에 루핑 횟수가 현저히 줄어든다. 그러므로 많은 양의 문자를 읽을 때는 read(char[] cbuf)
메소드를 사용하는 것이 좋다.
입력 스트림으로부터 len개의 문자만큼 읽고 매개값으로 주어진 문자 배열 cbuf[off]부터 len개까지 저장한다. 그리고 읽은 문자 수인 len개를 리턴한다.
len
개보다 작을 경우 읽은 수만큼만 리턴한다.-1
을 리턴한다.read(char[] cbuf)
와의 차이점은 off
를 0으로, len
을 배열의 길이로 준다면 read(char[] cbuf)
와 동일하다.//read(char[] cbuf)
Reader reader = ...;
char[] cbuf = new char[100];
int readCharNo = reader.read(cbuf);
//read(char[] cbuf, int off, int len)
Reader reader = ...;
int readCharNo = reader.read(cbuf, 0, 100);
마지막으로 Reader를 더 이상 사용하지 않을 경우에는
close()
메소드를 호출해서 Reader에서 사용했던 시스템 자원을 풀어준다.reader.close();
문자 기반 출력 스트림의 최상위 클래스로 추상 클래스이다.
모든 문자 기반 출력 스트림 클래스는 이 클래스를 상속받아서 만들어진다.
매개 변수로 주어진 int 값에서 끝에 있는 2바이트(한 개의 문자)만 출력 스트림으로 보낸다.
Writer writer = new FileWriter("C:/test.txt");
char[] data = "홍길동".toCharArray();
for (int i = 0; i < data.length; i++) {
writer.write(data[i]); //"홍", "길", "동"을 하나씩 출력
}
매개값으로 주어진
char[]
배열의 모든 문자를 출력 스트림으로 보낸다.
Writer writer = new FileWriter("C:/test.txt");
char[] data = "홍길동".toCharArray();
writer.write(data); //"홍길동" 모두 출력
c[off]
부터len
개의 문자를 출력 스트림으로 보낸다.
Writer writer = new FileWriter("C:/test.txt");
char[] data = "홍길동".toCharArray();
writer.write(data, 1, 2); //"길동"만 출력
Writer는 문자열을 좀 더 쉽게 보내기 위해
write(String str)
와write(String str, int off, int len)
메소드를 제공한다.
write(String str)
은 문자열 전체를 출력 스트림으로 보낸다.write(String str, int off, int len)
은 주어진 문자열 off
순번부터 len
개까지의 문자를 보낸다.Writer writer = new FileWriter("C:/test.txt");
String data = "안녕 자바 프로그램";
writer.flush();
writer.close();
flush()
메소드는 버퍼에 잔류하고 있는 데이터를 모두 출력시키고 버퍼를 비우는 역할을 한다.flush()
메소드를 마지막으로 호출하여 모든 문자가 출력되도록 해야 한다.Writer
를 더 이상 사용하지 않을 경우에는 close()
메소드를 호출해서 Writer
에서 사용했던 시스템 자원을 풀어준다.