BufferedReader/BufferedWriter, InputStreamReader/OutputStreamWriter의 차이

dev-jjun·2023년 2월 17일
0

Algorithm

목록 보기
6/15

컴퓨터의 키보드, 파일, 네트워크 등으로 입력을 하면 컴퓨터의 메모리에 입력값들이 저장되었다가 콘솔, 파일, 네트워크 등으로 출력된다. 이때 데이터는 0과 1의 byte 단위로만 이동하며, 자바에서는 입출력을 실행하기 위해 Stream이 사용된다.

바이트 단위로는 그림, 문자 등 모든 종류의 데이터를 주고 받을 수 있고, 문자 단위로는 문자만 주고 받을 수 있다.

InputStream / OutputStream - 바이트 단위 입출력을 위한 최상위 입출력 스트림 클래스
InputStreamReader / OutputStreamWriter - 문자 단위 입출력을 위한 하위 스트림 클래스
BufferedReader / BufferedWriter - 바이트 단위 입출력을 위한 하위 스트림 클래스
FileInputStream / FileOutputStream - 바이트 단위 입출력을 위한 스트림 클래스
FileReader / FileWriter - 문자 단위 입출력을 위한 하위 스트림 클래스

INPUT

클래스타입설명사용방법메소드
InputStreambyte1byte 읽기InputStream in = System.in;read()
InputStreamReaderchar문자로 읽기InputStreamReader reader = new InputStreamReader(in);read()
BufferedReaderString통째로 읽기BufferedReader br = new BufferedReader(reader);readLine()

read() 메소드는 아스키 코드의 int값으로 입력을 받는다. 여러 byte를 입력받기 위해서는 byte[ ] 의 배열 형태로 입력받아야 한다.

InputStream in = System.in;
int code = in.read();
char ch = (char) code;

InputStreamReader를 사용하면 char 등 원하는 타입의 문자 하나씩 입력받을 수 있고, 여기서 문자들이 조합된 하나의 문장으로 입력받고자 한다면 BufferedReader를 사용하면 된다.

BufferedReader는 텍스트의 라인(’\n’)이 바뀔 때까지, 즉 엔터를 입력하기 전까지의 모든 텍스트를 한꺼번에 받는 역할을 한다.

OUTPUT

INPUT과 동일하며, BufferedWriter에서 자주 사용되는 메서드는 아래와 같다.

메서드명기능
BufferedReader(Reader rd)rd에 연결되는 문자입력 버퍼스트림 생성
BufferedWriter(Writer wt)wt에 연결되는 문자출력 버퍼스트림 생성​
int read()스트림으로부터 한 문자를 읽어서 int 형으로 리턴
int read(char[] buf)문자배열 buf의 크기만큼 문자를 읽어들임.  읽어들인 문자 수를 리턴
int read(char[] buf, int offset, int length)buf의 offset위치에서부터 length 길이만큼 문자를 스트림으로부터 읽어들임​
String readLine()스트림으로부터 한 줄을 읽어 문자열로 리턴​​
void mark()현재우치를 마킹, 차 후 reset() 을 이용하여 마킹위치부터 시작함
void reset()마킹이 있으면 그 위치에서부터 다시시각, 그렇지 않으면 처음부터 다시시작
long skip(int n)n 개의 문자를 건너 뜀
void close()스트림 닫음
void write(int c)int 형으로 문자 데이터를 출력문자스트림으로 출력
void write(String s, int offset, int length)문자열 s를 offset 위치부터 length 길이만큼을 출력스트림으로 출력
void write(char[] buf, int offset, int length)문자배열 buf의 offset 위치부터 length 길이만큼을 출력스트림으로 출력​​​
void newLine()줄바꿈 문자열 출력
void flush()남아있는 데이터를 모두 출력시킴.

참고 자료

[Java] 콘솔 입력 - InputStream, BufferedReader, Scanner

[Java] BufferedReader, BufferedWriter를 활용한 빠른 입출력

profile
서버 개발자를 꿈꾸며 성장하는 쭌입니다 😽

0개의 댓글