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 |