Java에서 CSV 파일에 쓰는 방법

1. 개요

이 간단한 자습서에서는 Java를 사용하여 CSV 파일에 쓰는 방법을 배웁니다 . CSV는 Comma-Separated-Values의 약자이며 시스템 간 대량 데이터 전송을 수행하는 일반적인 형식입니다.

CSV 파일을 작성하기 위해 java.io 패키지의 클래스를 사용 합니다.

특수 문자 와 처리 방법에 대해 설명합니다. Microsoft Excel 및 Google Sheets에서 열도록 출력 파일 대상으로 지정 합니다.

Java 예제 후에 는 CSV 파일 작업에 사용할 수 있는 일부 타사 라이브러리를 간략하게 살펴 보겠습니다 .

2. PrintWriter로 쓰기

CSV 파일을 작성 하기 위해 PrintWriter 를 사용할 것 입니다. java.io 를 사용하여 파일에 쓰는 방법에 대한 자세한 내용은 파일 쓰기에 대한 기사를 참조하십시오.

2.1. CSV 작성

먼저, String 배열로 표현되는 한 줄의 데이터 형식을 지정하는 메서드를 만들어 보겠습니다 .

public String convertToCSV(String[] data) { return Stream.of(data) .map(this::escapeSpecialCharacters) .collect(Collectors.joining(",")); }

이 메서드를 호출하기 전에 다음으로 몇 가지 예제 데이터를 작성하겠습니다.

List dataLines = new ArrayList(); dataLines.add(new String[] { "John", "Doe", "38", "Comment Data\nAnother line of comment data" }); dataLines.add(new String[] { "Jane", "Doe, Jr.", "19", "She said \"I'm being quoted\"" });

그리고 그 데이터를 가지고 convertToCSV 로 각 행을 변환 하고 파일에 씁니다.

public void givenDataArray_whenConvertToCSV_thenOutputCreated() throws IOException { File csvOutputFile = new File(CSV_FILE_NAME); try (PrintWriter pw = new PrintWriter(csvOutputFile)) { dataLines.stream() .map(this::convertToCSV) .forEach(pw::println); } assertTrue(csvOutputFile.exists()); }

2.2. 특수 문자 처리

CSV 파일에서 특정 문자는 문제가 있으며 개발자로서 데이터 품질을 완전히 제어 할 수있는 경우는 거의 없습니다. 이제 특수 문자를 처리하는 방법을 살펴 보겠습니다.

이 예에서는 쉼표, 따옴표 및 새 줄에 중점을 둘 것입니다. 쉼표 또는 따옴표가 포함 된 필드는 큰 따옴표로 묶이고 큰 따옴표는 큰 따옴표로 이스케이프 처리됩니다. 새 줄을 제거하고 각 줄을 공백으로 바꿉니다.

문제가되는 문자와 처리 방법은 사용 사례에 따라 다를 수 있습니다.

우리 convertToCSV의 방법은 호출 escapeSpecialCharacters의 그것이 구축하는 것 등의 데이터의 각 부분에 대한 방법 문자열.

이제 escapeSpecialCharacters 메서드를 구현해 보겠습니다 .

public String escapeSpecialCharacters(String data) { String escapedData = data.replaceAll("\\R", " "); if (data.contains(",") || data.contains("\"") || data.contains("'")) { data = data.replace("\"", "\"\""); escapedData = "\"" + data + "\""; } return escapedData; }

3. 타사 라이브러리

예제에서 보았 듯이 CSV 파일 작성은 특수 문자와 처리 방법에 대해 생각하기 시작할 때 복잡해질 수 있습니다.

다행스럽게도 CSV 파일 작업에 사용할 수있는 타사 라이브러리가 많이 있으며 그중 많은 라이브러리가 이러한 특수 문자 및 발생할 수있는 기타 예외적 인 경우를 처리합니다.

그중 몇 가지를 살펴 보겠습니다.

  • Apache Commons CSV : CSV 파일 작업을위한 Apache의 CSV 제품
  • Open CSV : 인기 있고 적극적으로 유지 관리되는 또 다른 CSV 라이브러리
  • Flatpack : 활발하게 개발중인 오픈 소스 CSV 라이브러리
  • CSVeed : 오픈 소스 및 적극적으로 유지 관리

4. 결론

이 빠른 기사에서는 Java의 PrintWriter 클래스를 사용하여 CSV 파일을 작성하는 방법을 보여주었습니다 . 다음으로 출력되는 데이터의 특수 문자를 논의하고 처리했습니다.

평범한 Java 예제 후에 사용 가능한 타사 라이브러리의 개요를 살펴 보았습니다.

예제 코드는 GitHub에서 사용할 수 있습니다.