본문 바로가기
BE/Java

Java에서 CSV파일 읽기

by 이건 뭐야 2024. 3. 9.

CSV(Comma, Separated Values)

 

 

얼마 전 CSV 파일을 불러와야 하는 작업이 있었다.

Java를 하면서 CSV 파일을 불러와서 작업하는 것은 처음이였는데, 생각보다 쉽고 엄청 유용할 것 같아서 정리해본다.

 

 

CSV 파일은 엑셀형식으로 되어 있으며 파일의 입출력을 말한다.

CSV 형식에서는 데이터의 각 요소를 콤마(,)로 구분하고 개행 문자가 그대로 데이터의 행 구분을 나타낸다.

 

1 고디바 20000원 고급
2 페레로로쉐 5000원 일반
3 가나초콜릿 2000원 일반
// 예시
1, 고디바, 20000원, 고급
2, 페레로로쉐, 5000원, 일반
3, 가나초콜릿, 2000원, 일반

 

위와 같이 CSV 파일이 있을 경우 예시처럼 데이터를 읽어들이고 싶을 때가 있다.

 

 

 

이럴 때 java파일에서 사용할 수 있는 코드이다. 경로를 잘 설정해주고 데이터를 불러오면 된다.

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


// CSV 파일을 읽어 들이는 클래스
public class Main {
    public static void main(String[] args) {

        // 반환용 리스트 변수
        List<List<String>> ret = new ArrayList<>();
        // 입력 스트림 오브젝트 생성
        BufferedReader br = null;

        try {
            // 대상 CSV 파일의 경로 설정
            br = Files.newBufferedReader(Paths.get("C:\\Desktop\\Test.csv"),Charset.forName("UTF-8"));
            // CSV파일에서 읽어들인 1행분의 데이터
            String line = "";

            while((line = br.readLine()) != null) {
                // CSV 파일의 1행을 저장하는 리스트 변수
                List<String> tmpList = new ArrayList<>();
                String array[] = line.split(",");
                // 배열에서 리스트로 변환
                tmpList = Arrays.asList(array);
                // 리스트 내용 출력
                System.out.println(tmpList);
                // 반환용 리스트에 1행의 데이터를 저장
                ret.add(tmpList);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try{
                if(br != null) {
                    br.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

 

위의 코드를 실행했을 경우 다음과 같이 데이터를 불러온다.

 

[1, 고디바, 20000원, 고급]
[2, 페레로로쉐, 5000원, 일반]
[3, 가나초콜릿, 2000원, 일반]

 

불러온 데이터에서 콤마가 있는 문자열을 나누어 배열로 리턴하고, 나누어진 배열을 List에 저장하면 List<List<String>>형식이 된다.

 

 

 

 

 

참조

[자바][초급] #37 - CSV 파일 읽기 - 수아파파님

 

'BE > Java' 카테고리의 다른 글

Math 클래스 메소드  (3) 2024.05.02
정수 오버플로우(Integer overflow)  (0) 2024.03.20
Java 문법 charAt, join, repeat  (0) 2024.03.17
삼항 연산자  (0) 2024.03.13
Java 클래스  (0) 2024.02.27