상세 컨텐츠

본문 제목

[리더] 리더 클래스

자바

by esoesmio 2023. 4. 12. 15:16

본문

Reader : 문자 기반 입력 스트림의 최상위 클래스

<Reader 클래스를 상속받는 클래스>

  • FileReader
  • BufferedReader
  • InputStreamReader

test.txt file 내용

ABCD


1. read()

입력 스트림으로부터 한 개의 문자를 읽고 int 타입으로 리턴한다.

리턴한 int 값을 char 타입으로 변환하면 읽은 문자를 얻을 수 있다. 

읽을 게 없으면 -1을 반환함.


2. read(char[] cbuf)

매개값으로 주어진 문자 배열의 길이만큼 문자를 읽고 배열에 저장

읽은 문자 수를 리턴함.

많은 양의 문자를 읽을 때는 이 메소드를 사용하면 좋다.

읽을 게 없으면 -1을 반환함


3. read(char[] cbuf, int off, int len)

입력 스트림으로부터 len개의 문자만큼 읽고 매개값으로 주어진 문자배열 cbuf[off]부터 len개까지 저장한다. 

읽은 문자 수를 리턴함.

읽을 게 없으면 -1을 반환함


close()

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

관련글 더보기

댓글 영역