mun dev

[Java] BufferedReader 와 Bufferedwriter 사용법 본문

공부/Java

[Java] BufferedReader 와 Bufferedwriter 사용법

mndev 2023. 1. 30. 22:18
  • BufferedReader 는 Scanner와 유사
  • BufferedWriter는 System.out.println() 과 유사

 

BufferedReader, BufferedWriter는 Scanner와 System.out.println()보다 속도 측면에서 훨씬 빠르기 때문에 많은 양의 데이터들을 처리할 때 유리하다. 

(입력된 데이터가 바로 전달되지 않고 버퍼를 거쳐 전달되므로 데이터 처리 효율성을 높임)

 

 

BufferedReader는 Enter만 경계로 인식하고 받은 데이터가 String으로 고정되기 때문에 입력받은 데이터를 가공하는 작업을 해야하는 경우가 많다.  

 

 

 

사용시 밑에 있는 import들이 필요하다. 

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

 

import java.io.IOException; // throw 이용시 클래스 import

 

public static void main(String[] args) throws IOException{} // main 클래스 옆에 throws ~ 작성 

 

 

 

BufferedReader 사용법

1. 공백을 포함하지 않는 Int형

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
String str = br.readLine(); 
int i = Integer.parseInt(br.readLine());

 

readLine()시 리턴 값을 String으로 고정되기에 String이 아닌 다른타입으로 입력을 받을려면 형변환을 꼭 해주어야 한다.

 

예외처리를 꼭 해주어야 하기 때문에 try catch문을 사용해도 되지만 throws IOException을 통하여 예외처리를 해주어도 된다. 

 

 

 

2. 공백 포함하는 경우의 Int형 

   1) StringTokenizer 사용

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
StringTokenizer str=new StringTokenizer(br.readLine());

int a=Integer.parseInt(str.nextToken());
int b=Integer.parseInt(str.nextToken());

System.out.println("a= "+a+"b= "+b);

 

 

   - 배열에서의 사용 

 

   입력받은 문자열을 StringTokenizer에 넣은 후, nextToken() 메소드를 통해 공백 단위로 인식 

String s=br.readLine();
StringTokenizer str=new StringTokenizer(s);

for(int i=0; i<num.length; i++){
	num[i]=Integer.ParseInt(str.nextToken());
}

 

 

 

 

2) String.split()메소드 이용 

BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

String str=br.readLint();
String arr[]=str.split("");

int a=Integer.parseInt(arr[0]);

 

문자열을 split()메소드를 통해 공백 단위의 분할 후 문자열 배열에 저장

 

각 문자열 배열에 저장된 값을 Integer.parseInt() 메소드를 통해 정수형으로 변환 

 

 


BufferedWriter 사용법 

BufferedWriter bw=new BufferdWriter(new OutputStreamWriter(System.out));
String str="number123";
bw.write(str+"\n"); // 버퍼에 있는 값 전체 출력
bw.flush();  // 남아있는 값 출력 
bw.close();  // 스트림 닫기

 

BufferedWriter의 경우 버퍼를 잡아 놓았기 때문에 flush() / close()를 반드시 호출해 처리를 해주어야 한다.

 

write에는 System.out.println(); 과 자동 개행기능이 없기 때문에 따로 \n으로 개행을 해주어야 한다.