Reader
Reader는 문자기반 입력스트림의 최상위클래스로 추상클래스이다. 모든 문자 기반 입력 스트림은 이 클래스를 상속받아서 만들어진다.
Reader클래스에는 문자기반 입력 스트림이 기본적으로 가져야 할 메서드가 정의되어 있다.
리턴타입 | 메서드 | 설명 |
int | read() | 입력스트림으로부터 한개의 문자를 읽고 리턴한다. |
int | read( char[ ] cbuf ) | 입력 스트림으로부터 읽은 문자들을 매개 값으로 주어진 문자 배열cbuf에 저장하고 실제로 읽은 문자수를 리턴한다. |
int | read( char[ ] cbuf, int off, int len) | 입력스트림으로부터 len개의 문자를 읽고 매개값으로 주어진 문자배열 cbuf[off]부터 len개까지 저장한다. 그리고 실제로 읽은 문자수인 len개를 리턴한다. |
void | close() | 사용한 시스템 자원을 반납하고 입력 스트림을 닫는다. |
read() 메서드
입력스트림으로부터 한개의 문자(2바이트)를 읽고 4바이트 int타입으로 리턴한다.따라서 리턴된 4바이트중 끝에 있는 2바이트에 문자 데이터가 들어있다.
read()메서드가 리턴한 int값을 char타입으로 변환하면 읽은 문자를 얻을 수 있다.
char charData = (char) read();
더 이상 입력 스트림으로부터 문자를 읽을 수 없다면 read()메서드는 -1을 리턴하는데 이것을 이용하면 읽을 수 있는 마지막 문자까지 루프를 돌며 한 문자씩 읽을 수 있다.
Reader reader = new FileReader("C:/text.txt");
int readData;
while((readData = reader.read()) != -1) {
char charData = (char)readData;
}
read(char[ ] cbuf) 메서드
입력스트림으로부터 매개값으로 주어진 문자 배열의 길이만큼 문자를 읽고 배열에 저장한다. 그리고 읽은 문자 수를 리턴한다. 실제로 읽은 문자 수가 배열의 길이보다 작을 경우 읽은 수만큼만 리턴한다.
입력스트림으로부터 문자를 더 이상 읽을 수 없다면 -1을 리턴한다. 이것을 이용하면 읽을 수 있는 마지막 문자까지 루프를 돌며 읽을 수 있다.
Reader reader = new FileReader("C:/text.txt");
int readCharNo;
char[] cbuf = new char[2];
while((readCharNo = reader.read(cbuf)) != {
}
입력스트림으로부터 100개의 문자가 들어온다면 read()메서드는 100번을 루핑해서 읽어들어야한다. 그러나
read(char[ ] cbuf) 메서드는 한번 읽을 때 주어진 배열 길이만큼 읽기 때문에 루핑횟수가 현저히 줄어든다. 그러므로 많은 양의 문자를 읽을 때는 read(char[ ] cbuf) 메서드를 사용하는 것이 좋다.
read(char[ ] cbuf, int off, inf len) 메서드
입력스트림으로부터 len개의 문자만큼 읽고 매개 값으로 주어진 문자 배열 cbuf[off]부터 len개까지 저장한다.
읽은 문자수인 len개를 리턴한다. 실제로 읽은 문자 수가 len개보다 작을 경우 읽은 수만큼 리턴한다.
read(char[ ] cbuf, int off, inf len) 도 입력 스트림으로부터 문자를 더 이상 읽을 수 없다면 -1을 리턴한다. read(char[ ] cbuf)와의 차이점은 한 번에 읽어들이는 문자 수를 len 매개값으로 조절 할 수 있고, 배열에서 저장이 시작되는 인덱스를 지정할 수 있다는 점이다. 만약 off를 0으로, len을 배열의 길이로 준다면 read(char[] cbuf)와 동일한다.
close메서드
마지막으로 Reader를 더이상 사용하지 않을 경우에는 close()메서드를 호출해서 Reader에서 사용했던 시스템 자원을 풀어준다.
reader.close();
'java' 카테고리의 다른 글
java_15_Io 패키지- 출력스트림(Writer) (0) | 2021.10.29 |
---|---|
java_15_Io 패키지- 출력스트림(OutputStream) (0) | 2021.10.29 |
java_15_Io 패키지 - 출력스트림 (0) | 2021.10.28 |
Io패키지 FileReader (0) | 2021.10.28 |
java_15_Io 패키지 - 입력스트림 (InputStream ) (0) | 2021.10.28 |