Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- htmlFor
- VAR
- FOR
- createtextnode
- input
- 학습법 #집중력
- Openlayers
- const
- Let
- Append
- createElement
- appendChild
- boolean
Archives
- Today
- Total
Atomic Habits
JAVA - CSV 파일 읽기(한글 읽기, 한글 깨짐 방지, CSV 인코딩 UTF-8 저장) 본문
출처 : https://myhappyman.tistory.com/52?category=846887
CsvUtils.java
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class CsvUtils {
private static Log logger = LogFactory.getLog(CsvUtils.class);
public static List<List<String>> readToList(String path) {
List<List<String>> list = new ArrayList<List<String>>();
File csv = new File(path);
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(csv));
Charset.forName("UTF-8");
String line = "";
while((line=br.readLine()) != null) {
String[] token = line.split(",");
List<String> tempList = new ArrayList<String>(Arrays.asList(token));
list.add(tempList);
}
} catch (FileNotFoundException e) {
logger.error(e);
} catch (IOException e) {
logger.error(e);
} finally {
try {
if(br != null) {br.close();}
} catch (IOException e) {
logger.error(e);
}
}
return list;
}
}
로거부분은 제외하고 봐도 무관하다.
파라미터로 넘어온 경로를 읽어서 csv파일을 읽고 리스트로 return처리를 하는 함수다.
사용 호출부분
main.java
import java.util.List;
public class Main {
public static void main(String[] args) {
String path = "csv파일이 있는 경로 지정";
List<List<String>> list = CsvUtils.readToList(path);
for(int i=0; i<list.size(); i++) {
List<String> line = list.get(i);
for(int j=0; j<line.size(); j++) {
System.out.print(line.get(j)+",");
}
System.out.println();
}
}
}
한글 처리시 유의점은 UTF-8로 csv파일이 인코딩이 된 문서여야 읽힌다는 점이다.
엑셀에서 csv로 저장시에도 기본 인코딩인 유니코드로만 저장되는 점을 발견하였고, 강제 인코딩 방법으론
csv파일을 엑셀로 열지 말고 메모장으로 열어주고 다른 이름으로 저장 클릭 후 인코딩을 UTF-8로 처리하면 정상적으로 한글이 읽힌다.
'IT > JAVA' 카테고리의 다른 글
[출처/참조] 자바 채팅프로그램 개발 (0) | 2022.05.29 |
---|---|
Java_Web_Study (0) | 2022.04.26 |
공공데이터 개발노트 - 개발시 필요한 라이브러리 쉽게 가져오는 마술사 메이븐(Maven) 이란? (1) | 2021.12.21 |
Java NIO Direct Buffer를 이용해서 대용량 파일 행 기준으로 쪼개기 (0) | 2021.12.21 |
Java - csv Read 및 그룹별 Row 편집하여 csv 저장 (0) | 2021.12.21 |
Comments