본문 바로가기

자바/기초를 자바

[JAVA] BufferedReader, BufferedWriter 란 무엇인가

BufferedReader, BufferedWriter 란 무엇인가?

BufferedReader, BufferedWriter란, 이름 그대로 Buffer(버퍼)를 이용하는 함수이다.

 

Scanner 대신에 사용한다.

 

Scanner은 스페이스와 엔터를 경계로 입력값을 인식하지만, BufferedReader은 엔터만 경계로 인식한다. 또한 받은 데이터를 String으로 고정하기 때문에 데이터 후처리를 해야 하는 경우가 있다. 그렇지만 Scanner보다 빠르므로 사용한다.

 

버퍼를 사용하면 아래와 같은 방식으로 입력이 이루어진다.

 

버퍼를 사용하는 입력
버퍼를 사용하지 않는 입력
키보드
buffer
버퍼를 사용한 출력과 사용하지 않은 출력

이렇게 버퍼를 사용해서 입력을 모았다가 한번에 출력하면, 더 효율적이고 속도가 빠르다.

 

각 함수는 다음과 같은 상황에서 사용된다.

 

BufferedReader() : 버퍼를 이용한 입력

BufferedWriter() : 버퍼를 이용한 출력

 

BufferedReader() : 버퍼를 이용한 입력

import java.io.*;

public class BufferReaderEx {
    public static void main(String[] args) {
        try{    //예외처리

            //콘솔에서 입력받을 경우
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

            //파일에서 입력받을 경우
            FileReader fr = new FileReader("BufferReaderEx.java");
            BufferedReader br_f = new BufferedReader(fr);

            //String 리턴이므로 int로 형변환
            int num = Integer.parseInt(br.readLine());
            br.close();

            //파일 한줄한줄 읽어서 출력
            String line = "";
            for(int i=1; (line = br_f.readLine()) != null; i++){
                System.out.println(line);
            }
        }catch (IOException e){ // 스트림, 파일 및 디렉터리를 사용하여 정보에 액세스하는 동안 throw된 예외에 대한 기본 클래스
            e.printStackTrace();    //에러의 발생근원을 찾아 단계별로 에러출력
            System.out.println(e.getMessage()); //에러의 원인을 간단하게 출력
        }

    }
}

 

BufferedWriter() : 버퍼를 이용한 출력

println처럼 엔터 자동아니므로 "\n"을 넣어주어야 한다.

import java.io.*;

public class BufferedWriterEx {
    public static void main(String[] args) throws IOException{
        BufferedWriter bw = new BufferedWriter(new FileWriter("bufferedWriter.txt"));
        bw.write("hello\n");
        bw.newLine();
        bw.write("bufferedWriter");
        bw.flush(); //남아있는 데이터 모두 출력
        bw.close();
    }
}

'자바 > 기초를 자바' 카테고리의 다른 글

알고리즘이란?  (0) 2022.12.01
JAVA 제어자  (0) 2022.05.09
get()과 set()  (0) 2022.05.05
String 예제  (0) 2022.05.02