개인참고자료/자바(네트워크)

문자 스트림 - BufferedReader와 BufferedWriter

경진 2008. 7. 14. 22:25
BufferedReader와 BufferedWriter

Buffer에 있는 IO 클래스다.
Buffer란 다른 말로 메모리를 의미하는데, 메모리가 있기 때문에 입출력 시에 병목현상을 줄일 수 있다. 빠른 속도로 읽어 들이거나, 빠른 속도로 쓰고자 할 때 읽어 들여야 할 대상과 써야 할 대상 간의 속도 차이 때문에 병목현상이 일어날 수 있다. 따라서 중간에 버퍼를 둠으로써 읽기와 쓰기시 성능이 향상될 수 있다.

그리고 BufferedReader의 경우에는 한 줄씩 읽어 들이는 readLine 이라는 메소드가 있기 때문에 한줄씩 읽어 들이기에도 유리하다. 다만 주의해야 할 점이 있는데, BufferedWriter의 경우, 버퍼가 있기 때문에 반드시 flush() 메소드를 이용하거나 close() 메소드를 호출해줘야만 한다. 그렇지 않고 프로그램을 종료하게 되면 버퍼의 내용을 완전하게 쓸 수 없게 된다. 특히 네트워크 프로그래밍의 경우에는 write() 메소드를 호출한 후에는 반드시 flush() 메소드를 호출해줘야 한다.

BufferedReader 생성자

생성자 설명
BufferedReader(Reader in) Reader in을 인자로 전달받아 BufferedReader 객체를 생성한다.
BufferedReader(Reader in, int sz) Reader in을 인자로 전달받아 BufferedReader 객체를 생성한다. 이때 BufferedReader의 내부적으로 사용하는 버퍼의 크기를 sz로 지정한다.

BufferedReader의 생성자에 대한 설명을 보면 알겠지만, BufferedReader는 Reader를 인자로 전달 받는다. Reader를 인자로 전달 받는다는 것은 기존의 Reader에게 Buffer를 가지게 한다는 의미다.

BufferedWriter 생성자

생성자 설명
BufferedWriter(Writer out) Writer out을 인자로 전달받아 BufferedWriter 객체를 생성한다.
BufferedWriter(Writer out, int sz) Writer out을 인자로 전달받아 BufferedWriter 객체를 생성한다. 이때 BufferedWriter의 내부적으로 사용하는 버퍼의 크기를 sz로 지정한다.

BufferedReader의 중요 메소드

메소드 설명
String readLine() throws IOException 한 줄을 읽어 들여 반환한다. 이 때 개행문자는 지워지게 되며, 파일의 끝을 만났을 경우에는 null값을 반환하게 된다.