Reader : 문자 기반 입력 스트림의 최상위 클래스
<Reader 클래스를 상속받는 클래스>
test.txt file 내용
ABCD
입력 스트림으로부터 한 개의 문자를 읽고 int 타입으로 리턴한다.
리턴한 int 값을 char 타입으로 변환하면 읽은 문자를 얻을 수 있다.
읽을 게 없으면 -1을 반환함.
매개값으로 주어진 문자 배열의 길이만큼 문자를 읽고 배열에 저장
읽은 문자 수를 리턴함.
많은 양의 문자를 읽을 때는 이 메소드를 사용하면 좋다.
읽을 게 없으면 -1을 반환함
입력 스트림으로부터 len개의 문자만큼 읽고 매개값으로 주어진 문자배열 cbuf[off]부터 len개까지 저장한다.
읽은 문자 수를 리턴함.
읽을 게 없으면 -1을 반환함
reader를 더이상 사용하지 않을 경우에 close()를 호출해서
reader에서 사용했던 시스템 자원을 풀어준다.
Reader
: 추상 클래스, 문자 기반 입력 스트림의 최상위 클래스
모든 문자 기반 입력 스트림은 Reader 캘르스를 상속받아 만들어짐.
FileReader, BufferedReader, InputStreamPeader 클래스는 모든 Reader를 상속받음.
read()
: 입력 스트림으로부터 한 개의 문자(2바이트)를 읽고 4바이트 int 타입으로 리턴.
=> 리턴된 4바이트 중 끝에 있는 2바이트에 문자 데이터가 들어있음.
ex) 입력 스트림에 3개의 문자(6바이트)가 들어오면 read() 메서드로 문자 하나씩 세 번 읽을 수 있음.
□□■■ 한 개의 문자
□□■■ 한 개의 문자
□□■■ 한 개의 문자
read()가 리턴한 int 값을 char 타입으로 변환하면 읽은 문자를 읽을 수 있음.
char charData = (char) read();
더 이상 입력 스트림으로부터 문자를 읽을 수 없으면 read()는 -1을 리턴 => 읽을 수 있는 마지막 문자까지 루프를 돌며 한 문자씩 읽을 수 있음.
Reader r = new FileReader("파일 경로");
int readData;
whie((readData=r.read()) != -1){
char charData = (char) readData;
}
read(char[] cbuf)
: 입력 스트림으로부터 매개값으로 주어진 문자 배열의 길이만큼 문자를 읽고 배열에 저장, 읽은 문자 수 리턴 , 읽은 문자 수가 배열 길이보다 작으면 읽은 수만큼만 리턴.
ex) 입력 스트림에 5개의 문자가 들어온다면 길이가 2인 문자 배열로 3번 읽을 수 있음.
2,2,1개씩 읽음.
이 메서드 또한 더 이상 입력 스트림으로부터 문자를 읽을 수 없으면 read()는 -1을 리턴 => 읽을 수 있는 마지막 문자까지 루프를 돌며 한 문자씩 읽을 수 있음.
Reader r = new FileReader("파일 경로");
int readCharNo;
char[] cbuf = new char[2];
while((readCharNo = r.read(cnuf)) != -1) { ... }
입력 스트림으로부터 200개의 문자가 들어온다면 read()는 200번 루핑해서 얽어야 한다. 하지만
read(char[] cbuf)는 한 번 읽을 때 주어진 배열 길이만큼 읽으므로 루핑 횟수가 줄어즘.
=> 많은 양의 문자를 읽을 때는 read(char[] cbuf)를 사용하는 것이 b
read(char[] cbuf, int off, int len)
: 입력 스트림으로부터 len 개의 문자만큼 읽고 매개값으로 주어진 문자 배열 cbuf[off]부터 len까지 저장. 읽은 문자 수인 len개만큼 리턴하지만 읽은 문자 수가 len보다 작을 경우 읽은 수 만큼 리턴.
이 메서드도 역시 더 이상 입력 스트림으로부터 문자를 읽을 수 없으면 read()는 -1을 리턴 => 읽을 수 있는 마지막 문자까지 루프를 돌며 한 문자씩 읽을 수 있음.
Reader reader = new FileReader("파일 경로");
char[] cbuf = new char[100];
int readCharNo = is.read(cbuf, 0, 100);
close()
: Reader를 더 이상 사용하지 않을 경우 사용.
reader.close();
[스트림]스트림부수기 (0) | 2023.04.12 |
---|---|
[스트림 종류와 객체 생성] (0) | 2023.04.12 |
[스트림] 스트림에 대한 시리즈. 5개 따라서 공부 (0) | 2023.04.12 |
[스트림] 연습문제 (0) | 2023.04.12 |
[인터페이스] 펑션 (0) | 2023.04.12 |
댓글 영역