java-csv
JavaでCSVファイルに書き込む方法
1. 概要
この短いチュートリアルでは、Java *を使用してCSVファイルに書き込む方法を学習します。 CSVはComma-Separated-Valuesの略で、システム間でバルクデータ転送を行うための一般的な形式です。
CSVファイルを作成するには、_java.io_パッケージのクラスを使用します。
*特殊文字*とその取り扱い方法について説明します。 出力ファイルをターゲットにします。* Microsoft ExcelとGoogleスプレッドシートで開きます。*
Javaの例の後、* CSVファイルを操作するために使用可能なサードパーティライブラリをいくつか簡単に見ていきます。*
2. _PrintWriter_を使用した書き込み
CSVファイルの書き込みには、_PrintWriter_を使用します。 _java.io_を使用してファイルに書き込む方法の詳細については、https://www.baeldung.com/java-write-to-file [ファイルへの書き込みに関する記事]を参照してください。
2.1. CSVを書く
最初に、__ String__sの配列として表される1行のデータをフォーマットするメソッドを作成します。
public String convertToCSV(String[] data) {
return Stream.of(data)
.map(this::escapeSpecialCharacters)
.collect(Collectors.joining(","));
}
ただし、このメソッドを呼び出す前に、次のサンプルデータを作成しましょう。
List<String[]> 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\"" });
そして、そのデータを手に入れて、row_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_メソッドは、_String._を構築するときに、各データに対してon_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:もう1つの人気のある
積極的に維持されるCSVライブラリ -
Flatpack:オープンソースのCSVライブラリ
積極的に開発されている -
CSVeed:オープンソースで積極的にメンテナンスされています
4. 結論
この簡単な記事では、Java PrintWriterクラスを使用してCSVファイルを作成する方法を示しました。 次に、出力されるデータの特殊文字について説明し、処理しました。
単純なJavaの例の後、利用可能なサードパーティライブラリの概要を見ました。
サンプルコードはhttps://github.com/eugenp/tutorials/tree/master/core-java-modules/core-java-io[GitHubで]から入手できます。