BuffredReader - 엑셀 불러오기

데이터허브 관련 업무 도중 엑셀을 불러와서 테이블에 대입하는 기능이 필요했습니다.

이 때 사용하는 기능이 BuffredReader인데, 이 것이 무엇인지 모르기에 이번 기회에 알아봅시다!

 


1. BuffredReader

BuffredReader란? 

Java에서 텍스트 파일 or 다른 입력 스트림에서 데이터를 효율적으로 읽기 위해 사용되는 클래스입니다.
java.io 패키지에 포함되어 있으며, 주로 파일 읽기네트워크 통신콘솔 입력 등에서 유용하게 사용됩니다.

 


2. 특징

BufferedReader의 특징에 대해 알아봅시다.
먼저 BufferedReader는 내부 버퍼를 사용하여 데이터를 한 번에 읽어들입니다.
이로 인해 I/O 작업의 빈도를 줄이고 성능을 향상시킬 수 있어요.

※ I/O : 입력(Input)과 출력(Output)의 약자

 

또한, 문자 단위로 데이터를 읽기 때문에, 텍스트 파일을 읽을 때 유용합니다.
바이트 단위로 읽는 InputStream과 달리, 문자 인코딩을 자동으로 처리해요.

그리고 readLine( ) 메서드를 제공하여, 한 줄씩 쉽게 읽을 수 있어요.
이 메서드는 줄 끝의 개행 문자를 자동으로 처리합니다.

 


3. 사용방법

그럼 이제, 직접 사용해 볼까요?

java 파일

public void saveDataFromCSV(file) {
    try (BufferedReader reader = new BufferedReader(new InputStreamReader(file.getInputStream(), "euc-kr"))) {
        // 첫 번쨰 라인은 무시
        String line = reader.readLine();
        while ((line = reader.readLine()) != null) {
            try {
                // csv 파일이기에 쉼표(,)로 구분해서 불러오기
                String[] values = line.split(",");
                int column = 0;

                HashMap<String, Object> map = new HashMap<String, Object>();

                // map에 값 입력
                map.put("a", values[column++]);
                map.put("b", values[column++]);
                map.put("c", values[column++]);
                
                String A = (String) map.get("a");
                String B = (String) map.get("b");
                String C = (String) map.get("c");

                abc.insert_set_list(map);
            } catch (Exception e) {
                log.error("{}", line, e.toString());
            }
        }
    }
}

 

csv 파일

 

이렇게 하면, file.csv의 값을 readLine( )이 한 줄씩을 읽어 문자열로 반환하여 line에 값을 넣고 출력하게 됩니다!

 


4. 정리하며

지금까지 BufferedReader이 무엇이고 어떻게 사용하는 지 알아보았습니다.
이는 메모리와 성능 측면에서 효율적이기 때문에, 대용량 파일 처리 or 반복적인 I/O 작업에서 유용하게 사용할 수 있어요!

 

참고
B. Y. Kim 님의 JAVA - BufferedReader / BufferedWriter (입출력 함수)
원태연 님의 BufferedReader를 알고 쓰자