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
- AI
- MySQL
- 티스토리챌린지
- Kubernetes
- APM
- 정보처리기사실기 기출문제
- 기록으로 실력을 쌓자
- 공부
- AWS EKS
- kotlin coroutine
- CKA
- 오블완
- Java
- minikube
- CloudWatch
- kotlin querydsl
- 정보처리기사 실기
- Elasticsearch
- kotlin spring
- CKA 기출문제
- kotlin
- Spring
- Pinpoint
- PETERICA
- 정보처리기사 실기 기출문제
- IntelliJ
- mysql 튜닝
- 코틀린 코루틴의 정석
- Linux
- aws
Archives
- Today
- Total
피터의 개발이야기
[JAVA] CSV 파일 만들기 본문
반응형
백업데이터를 생성할 때에 CSV파일을 생성할 일이 많이 있습니다.
CSV 파일 생성 방법에 대해 정리를 하였습니다.
gradle
compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.11.4'
compile group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.11.4'
compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.11.4'
compile group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-csv', version: '2.11.4'
CSVUtil.java
import com.fasterxml.jackson.databind.ObjectWriter;
import com.fasterxml.jackson.dataformat.csv.CsvGenerator;
import com.fasterxml.jackson.dataformat.csv.CsvMapper;
import com.fasterxml.jackson.dataformat.csv.CsvSchema;
import org.springframework.stereotype.Component;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.util.List;
@Component
public class CSVUtil {
// makeCsvFile
public void makeCsvFile(Class<?> clazz, File csvFile, List<?> dataList) {
try {
CsvMapper csvMapper = new CsvMapper();
CsvSchema csvSchema =
csvMapper.enable(CsvGenerator.Feature.ALWAYS_QUOTE_STRINGS)
.schemaFor(clazz) // CSV 파일로 생성할 자바 객체의 클래스 정보
.withHeader() // CSV 헤더 사용 여부
.withColumnSeparator(',') // 컬럼 간 구분자
.withLineSeparator("\n"); // 개행
ObjectWriter writer = csvMapper.writer(csvSchema);
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream(csvFile), "UTF-8");
writer.writeValues(outputStreamWriter).writeAll(dataList);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
ExportVO
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class ExportVO {
private String conversationId;
private String talk;
public ExportVO(String conversationId, String talk) {
this.conversationId = conversationId;
this.talk = talk;
}
}
VO에 담겨 있는 객체는 CSV해더들의 컴럼이 된다.
makeCSVfile.java
public class CSVFileMakeTest {
@Test
public void makeCSVfile(){
// 파일의 내용
ExportVO exportVO = new ExportVO("conversationId","talkText");
// 파일의 row생성
List<ExportVO> list = new ArrayList<>();
list.add(exportVO);
// 저장할 CSV파일 객체
File csvFile = new File("test.csv");
CSVUtil csvUtil = new CSVUtil();
csvUtil.makeCsvFile(ExportVO.class, csvFile, list);
}
}
생성된 파일
"conversationId","talk"
"conversationId","talkText"
소스는 여기 있습니다.
반응형
'Programming > JAVA' 카테고리의 다른 글
[JAVA] Java replace (0) | 2021.01.19 |
---|---|
[JAVA] 자바 파일 입출력, 커스컴 AutoCloseable (0) | 2021.01.17 |
[JAVA] 양방향 암호화기법 AES_ENCRYPT, AES_DECRPYT (0) | 2021.01.02 |
[JAVA] JAVA 연습문제 풀어볼 수 있는 곳 (0) | 2020.12.19 |
[JAVA] Tomcat OutOfMemory시 톰캣 자동 재시작 (0) | 2020.12.17 |
Comments