본문 바로가기

기초이론/JAVA

BufferedReader 와 Bufferedwriter

Scanner와 마찬가지로 사용자에게 입출력을 받을 때에 사용하는 클래스이며 대용량 데이터를 처리해야할 때에 사용한다.


설명

  • BufferedReader / BufferedWriter 란 버퍼를 이용하는 대표적인 I/O (Input / Output) 클래스이다
  • BufferedReader : Scanner와 유사함
  • BufferedWriter : System.out.println(); 과 유사함
  • 입력된 데이터를 바로 전달하지 않고 버퍼에 저장해두었다가 전달하는 방법
  • 버퍼를 거쳐서 간접적으로 출력장치로 전달되어서 시스템의 데이터처리 효율성을 높여주며 InputStreamReader / OutputStreamWriter 를 같이 사용하여 버퍼링을 하게되면 입출력 스트림으로부터 미리 버퍼에 데이터를 갖다 놓기 때문에 보다 효율적인 입출력이 가능하다.
  • BufferedReader 의 readLine()를 사용하면 데이터를 줄 단위로 읽을 수 있다
  • BufferedWriter 의 newLine() 은 줄바꿈 메소드이다.
  • Enter 를 기준으로 입력값을 인식한다.

Buffer 작동법


BufferedReader 사용 형태

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public static void main(String[] args) throws IOException {
    BufferedReader bf = new BufferedReader(new InputStreamReader(System.in
    
    String str = bf.readLine();
    
    int i = Integer.parseInt(bf.readLine());
    
    String arr[] = str.split(" ");
    
    StringTokenizer st = new StringTokenizer(br.readLine()," ");
}

 

객체 생성 후, String과 int 형태의 데이터를 입력받는 과정이다.

  • BufferedReader를 선언하여 객체 생성을 한다.
  • Enter를 기준으로 라인 단위로 입력을 받는다.
  • readLine() 은 스트림으로부터 한 줄을 읽어 문자열을 리턴해주는 메소드이다.
  • readLine() 을 사용할 시에 리턴값이 String 으로 고정되므로 다른 타입으로 입력을 받기 위해서는 형변환을 해주어야 한다.
  • readLine() 사용 시 반드시 예외처리를 해주어야 한다. 
    • try & catch 사용하여 예외처리
    • throws IOException 사용하여 예외처리 (주로 이 방식으로 사용한다.)
  • 정수형으로 입력받아야 한다면, 형변환을 해주어야 한다.
  • Space를 기준으로 입력받아야 할 때에 split 혹은 StringTokenizer 클래스를 이용해서 사용한다.

[StringTokenizer에 대한 자세한 설명은 추후에 추가할 예정이다.]


 

BufferedWriter 사용 형태

 

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;

public static void main(String[] args) throws IOException {
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
        String str = "Hello"
        int T =  Integer.parseInt(br.readLine());
		
        bw.write(str);
        bw.write(T+"\n");
			
        bw.flush();
        bw.close();
}

 

객체 생성 후, String과 int 형태의 데이터를 출력하는 과정이다.

  • BufferedWriter 를 선언하여 객체 생성을 한다.
  • 문자가 담긴 str과 정수가 담긴 T 를 선언한다.
    • BufferedReader와 마찬가지로 readLine()을 사용하기 위해  int형은 형변환을 해준다
  • 문자열은 그대로 출력하면 되지만, 숫자를 그대로 출력하면 아래와 같이 표현되기 때문에 +\n 을 추가하여 문자열 형태로 바꿔주어야 한다.
    • bw.write(T) 로 출력했을 때의 결과물
      • 
  • 버퍼의 경우 반드시 버퍼를 끝내는 마무리 작업을 거쳐야 하므로 bw.flush() 와 bw.close()를 해주어야 한다.
    • bw.flush() 는 남아있는 데이터를 모두 출력시키는 메소드이다.
    • bw.close() 는 스트림을 닫는 메소드이다.

 

 

 

 

 

'기초이론 > JAVA' 카테고리의 다른 글

InputStreamReader 와 OutputStreamReader  (0) 2021.07.18
Scanner  (0) 2021.07.18