판봉 개발 일기

문자 입력 스트림 Reader 본문

자바 복습

문자 입력 스트림 Reader

판봉 2021. 7. 15. 17:08
728x90

Reader는 문자 기반 입력 스트림의 최상위 클래스로 추상 클래스입니다.

다음 표에는 Reader 클래스의 주요 메소드를 보여줍니다.

리턴 타입 메소드 설명
int read() 1개의 문자를 읽고 리턴
int  read(char[] cbuf) 읽은 문자들을 매개값으로 주어진 문자 배열에 저장하고 읽은 문자수를 리턴
int  read(char[] cbuf, int off, int len) len개의 문자를 읽고 매개값으로
주어진 문자 배열에서 cbuf[off]부터 len개까지 저장합니다.
그리고 읽은 문자 수를 리턴
void close() 입력 스트림을 닫음

read()메소드

read() 메소드는 입력 스트림으로 부터 1개의 문자(2byte)를 읽고 int(4byte)타입으로 리턴합니다.

즉, 끝에 있는 2byte에 문자 데이터가 있는 것입니다.

 

다음은 read() 메소드가 리턴한 int값을 char타입으로 변환한 것입니다.

char charData = (char) read();

또한 여태껏 살펴본 입력 스트림들과 마찬가지로 문자를 읽을 수 없는 경우엔 -1을 리턴합니다.

다음은 그와 관련된 코드입니다.

import java.io.FileReader;
import java.io.Reader;

public class ReadExample {
	public static void main(String[] args) throws Exception {
    Reader reader = new FileReader("C:/Temp/test7.txt"); // 문자 기반 파일 입력스트림생성
    while(true) {
    	int data = reader.read(); // 한 문자씩 읽기
        if(data = -1) break;
        }
        reader.close(); // 입력스트림을 닫음
    }
    }
}

/*실행 결과
A
B
C
*/

read(char[] cbuf) 메소드

read(char[] cbuf) 메소드는 입력 스트림으로부터 매개값으로 주어진 문자 배열의 길이만큼 문자를 읽고 배열에 저장 한 뒤에 읽은 문자 수를 리턴합니다.

그리고 위와 마찬가지로 더이상 문자를 읽을 수 없다면 -1을 리턴합니다.

다음은 그와 관련된 코드입니다.

import java.io.FileReader;
import java.io.Reader;

public class ReadExample {
	public static void main(String[] args) throws Exception{
    Reader reader = new FileReader("C:/Temp/test8.txt");
    
    char[] buffer = new char[100];
    
    while(true) {
    int readCharNum = reader.read(buffer);
    if(readeCharNum == -1) break;
    for(int i =0; i<readCharNum; i++) {
    	System.out.println(buffer[i]);
    }
    }
    
    reader.close();
    }
}

read(char[] cbuf, int off, int len) 메소드

read(char[] cbuf, int off, int len) 메소드는 입력 스트림으로부터 len개의 문자만큼 읽고 주어진 문자 배열에서

cbuf[off]부터 len개까지 저장이 가능합니다.

그리고 읽은 문자 수인 len개를 리턴합니다.

그리고 이것도 문자를 더 이상 읽을 수 없다면 -1을 리턴합니다.

*바이트 기반 입력 스트림과 비슷한 것 같다고 생각이 듭니다.

 

다음 코드는 그와 관련된 코드입니다.

import java.io.FileReader;
import java.io.Reader;

publis class ReadExample {
	public static void main(String[] args) throws Exception {
    	Reader reader = new FileReader("C:/Temp/test9.txt");
        
        char[] buffer = new char[5];
        
        int readCharNum = reader.read(buffer, 2, 3);
        if(readCharNum != -1) {
        for(int i =0; i<buffer.length; i++) {
        System.out.println(buffer[i]);
        }
        }
        
        reader.close();
    }
}

'자바 복습' 카테고리의 다른 글

문자 변환 보조 스트림  (0) 2021.07.15
보조 스트림  (0) 2021.07.15
문자 출력 스트림 : Writer  (0) 2021.07.14
바이트 입력 스트림 : InputStream  (0) 2021.07.14
바이트 출력 스트림 : OutputStream  (0) 2021.07.14