BufferedReader, Bufferedwriter란?
Scanner, System.out.print()와 유사한 입출력 클래스입니다.
데이터가 입력되는 순간 Buffer를 거쳐 전달되기 때문에 입출력의 효율이 비교할 수 없을 정도로 좋아집니다.
지금부터 BufferedReader / Bufferedwriter의 사용법에 대해 알아보겠습니다.
BufferedReader 사용하는 법
1. import문과 예외처리
BufferedReader 의 import문은 다음과 같습니다
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
그리고, Buffer를 사용하기에 앞서 IOException라는 예외처리를 꼭 넣어주어야 합니다.
public class Main{
public void main(String[] args) throws IOException {
}
넣지 않을 시, 아래와 같은 오류가 발생하여 정상적으로 동작하지 않습니다.
java: unreported exception java.io.IOException; must be caught or declared to be thrown
2. 객체 생성하기
BufferedReader의 객체를 생성합니다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedReader라는 객체를 만들면, System.in을 사용하여 사용자로부터 입력 받고, InputStreamReader로 OS에서 사용하는 기본 인코딩의 문자로 변환되는 코드입니다.
3. 입력
BufferedReader를 통해 읽을 땐, 타입이 무조건 String으로 고정됩니다. 만약 Int타입으로 하고 싶을 경우에는 형변환을 해야합니다.
String a = br.readLine();
BufferedReader의 readLine()을 이용하여 데이터를 입력받습니다. readLine()은 라인 단위로 데이터를 읽을 수 있는 코드입니다.
※ Int 타입으로 입력받고 싶을 경우
Integer.parseInt()라는 메서드로 String타입을 int타입으로 형변환하여 사용하시면 됩니다.
int a = Integer.parseInt(br.readLine());
▷예시
BufferedReader를 이용하여 숫자 두 개를 입력받은 후 두 수의 합을 System.out.println()으로 출력하는 코드입니다.
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //입력
int a = Integer.parseInt(br.readLine()); //형변환
int b = Integer.parseInt(br.readLine());
System.out.println(a+b); //출력
br.close();
}
}
결과입니다
입력 출력 1
23 10
212
위의 예시에서는 이해하기 쉽도록 Bufferedwriter 대신 System.out.println()를 사용했습니다.
Bufferedwriter 사용하는 법
1. import문 작성
BufferedWriter를 사용하기 위해 필요한 import문입니다.
import java.io.BufferedWriter;
2. 객체생성
BufferedWriter의 객체를 생성합니다.
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
3. 출력
알아보기 쉽게 "출력"이라는 코드로 출력해보겠습니다.
bw.write("출력");
bw.close();
.write는 System.out.println()과 같은 역할을 합니다.
하지만, 이 코드는 String타입만 출력이 가능하기 때문에 숫자를 출력하고 싶을 땐 형변환을 해줘야 합니다.
그리고 Bufferedwriter는 사용 후 .close();로 닫아줘야 합니다.
※ 숫자를 출력하고 싶을 경우
1이라는 숫자를 출력하는 코드입니다.
bw.write(String.valueOf(1));
bw.close();
먼저, 1이라는 숫자를 String.valueOf()를 통하여 String 타입으로 변환해준 다음
.write()로 출력하면 됩니다.
▷예시
위의 BufferedReader 예시에서 나온 코드를 응용하여,
BufferedReader를 이용하여 숫자 두 개를 입력받은 후 두 수의 합을 BufferedWriter로 출력하는 코드입니다.
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //입력
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); //출력
int a = Integer.parseInt(br.readLine());
int b = Integer.parseInt(br.readLine());
bw.write(String.valueOf(a+b));
br.close();
bw.close();
}
}
결과입니다.
입력 출력 1
23 10
212
댓글