PS/이론

BufferedReader와 BufferedWriter의 사용법 (JAVA)

제이온 (Jayon) 2020. 9. 16.

안녕하세요? 코딩 중독입니다.

저번 시간에는 우리가 Scanner와 System.out.println 대신 BufferedReader와 BufferedWriter를 사용해야하는 이유를 알 수 있었습니다.

 

이번 시간에는 BufferedReaderBufferedWriter의 사용법에 대해서 알아보겠습니다.

 

 

BufferedReader의 사용법

BufferedReader의 메소드는 여러 개가 있지만, 사실상 우리가 PS를 위해서 쓰는 메소드는 'readLine()'와 'close()' 밖에 없습니다.

따라서, 저는 위 두 가지를 어떻게 사용해야하는지 위주로 설명하겠습니다.

 

먼저, readLine()은 입력값으로 들어온 데이터를 한 줄로 읽어서 String으로 바꾸는 메소드입니다.

무조건 한 줄만 읽는다는 것을 꼭 기억하시길 바랍니다.

 

예를 들어, 문제에서 입력값이 다음과 같이 주어졌다고 가정합시다.

 

 

5

1 2 3 4 5

 

 

첫 번째 줄의 5는 배열의 사이즈고, 두 번째 줄은 배열의 요소라고 합시다.

 

이때, 5는 readLine() 을 통해서 읽고, Integer.parseInt()로 int 타입으로 바꾸면 됩니다.

하지만, 두 번째 줄은 요소 하나 하나를 가져와야하기때문에 readLine() 을 통해서 읽고, StringTokenizer split()을 통해 "1", "2", ... "5" 로 따로 입력을 읽고, 배열에 집어 넣어야합니다.

 

위 내용을 코드로 표현해 보겠습니다.

 

 

 

 

위에서 언급했듯이 중간에 Integer.parseInt를 사용하는 부분이나 StringTokenizer를 부가적으로 사용한 부분은 납득이 갈 것입니다. 하지만, BufferedReader를 쓰기 위해서 알아야할 요소가 한 가지 더 있습니다.

 

바로, 예외 처리입니다. main 메소드 오른쪽을 보면 throws 처리된 부분이 있는데, 이와 같이 IOException 예외 처리를 반드시 해 주셔야합니다.

 

마지막으로, 입력 작업이 끝나서 BufferedReader를 더 이상 사용할 필요가 없게 되면 close()를 통해서 입력 스트림을 닫고 사용하던 자원을 해제하면 됩니다.

 

 

BufferedWriter의 사용법

BufferedWriter의 메소드도 여러 가지가 있지만, PS를 위해서 사용하는 메소드의 사용법만 알아보겠습니다.

사용되는 메소드는 'write()', 'flush()', 'close()' 입니다.

 

사용 방법은 간단합니다. write()을 사용하여 출력할 내용을 담고, flush()을 통해서 버퍼를 비워내는 동시에 콘솔에 출력하면 됩니다.

 

주의할 점은 write()만 사용한다고 콘솔에 출력이 되는 것은 아니고, 반드시 flush()을 써 주어야 합니다.

그리고 출력이 끝났으면, close()을 통해서 스트림을 닫습니다.

 

마지막으로, BufferedWriter도 BufferedReader와 마찬가지로 IOException 예외 처리를 반드시 해 주어야 합니다.

 

 

아래는 BufferedWriter를 사용한 코드입니다.

 

 

 

 

정리

지금까지 PS를 할 때, BufferedReader와 BufferedWriter를 어떻게 사용하는지 배웠습니다.

위에서 언급한 예외 처리, 선언, 필수 메소드 방식을 익힌다면, 입출력에서 시간 초과가 나는 일은 없을 것입니다.

 

다음 시간에는 입출력의 마지막 시간 'EOF'에 대해서 알아보겠습니다.

 

 

지적 혹은 조언 환영합니다! 언제든지 댓글로 남겨주세요.

댓글

추천 글