CSVファイルを配列に読み込む
1.概要
簡単に言うと、CSV(Comma Separated Values)ファイルには、コンマ区切り文字で区切られた編成情報が含まれています。
このチュートリアルでは、CSVファイルを配列に読み込むさまざまな方法について説明します。
2.
java.i
の
BufferedReader
まず、
BufferedReader
の
readLine()
を使用してレコードを1行ずつ読み取ります。次に、カンマ区切り文字に基づいて行をトークンに分割します。
List<List<String>> records = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new FileReader("book.csv"))) {
String line;
while ((line = br.readLine()) != null) {
String[]values = line.split(COMMA__DELIMITER);
records.add(Arrays.asList(values));
}
}
-
このアプローチでは、より洗練されたCSV(値を引用符で囲む、または値としてカンマを含めるなど)は意図したとおりに解析されません。
3. java.utilのスキャナ
次に、
java.util.Scanner
を使用してファイルの内容を調べ、1行ずつ順番に取得します。
List<List<String>> records = new ArrayList<>();
try (Scanner scanner = new Scanner(new File("book.csv"));) {
while (scanner.hasNextLine()) {
records.add(getRecordFromLine(scanner.nextLine()));
}
}
それから行を解析してそれを配列に格納します。
private List<String> getRecordFromLine(String line) {
List<String> values = new ArrayList<String>();
try (Scanner rowScanner = new Scanner(line)) {
rowScanner.useDelimiter(COMMA__DELIMITER);
while (rowScanner.hasNext()) {
values.add(rowScanner.next());
}
}
return values;
}
これまでと同様に、この方法では、より洗練されたCSVは意図したとおりに解析されません。
4. OpenCSV
より複雑なCSVファイルをOpenCSVで扱うことができます。
-
OpenCSVは、CSVファイルを扱うためのAPIを提供するサードパーティのライブラリです。** ファイル内のレコードを読み取るには、
CSVReader
の
readNext()
メソッドを使用します。
List<List<String>> records = new ArrayList<List<String>>();
try (CSVReader csvReader = new CSVReader(new FileReader("book.csv"));) {
String[]values = null;
while ((values = csvReader.readNext()) != null) {
records.add(Arrays.asList(values));
}
}
OpenCSVについてもっと深く掘り下げて学ぶには、https://www.baeldung.com/opencsv[OpenCSV tutorial]をチェックしてください。
5.まとめ
このクイックチュートリアルでは、CSVファイルを配列に読み込むためのさまざまな方法を調べました。
いつものように、例の完全なソースコードはhttps://github.com/eugenp/tutorials/tree/master/core-java-io[GitHubで利用可能]です。