CSVファイルを配列に読み込む

CSVファイルを配列に読み込む

1. 概要

簡単に言えば、CSV(コンマ区切り値)ファイルには、コンマ区切り文字で区切られた整理された情報が含まれています。

このチュートリアルでは、CSVファイルを配列に読み込むさまざまな方法を検討します。

2. java.ioBufferedReader

まず、BufferedReaderreadLine()を使用して、レコードを1行ずつ読み取ります。 次に、カンマ区切り文字に基づいて行をトークンに分割します。

List> 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.utilScanner

次に、java.util.Scannerを使用してファイルの内容を実行し、行を1つずつ順番に取得します。

List> records = new ArrayList<>();
try (Scanner scanner = new Scanner(new File("book.csv"));) {
    while (scanner.hasNextLine()) {
        records.add(getRecordFromLine(scanner.nextLine()));
    }
}

次に、行を解析して配列に保存します。

private List getRecordFromLine(String line) {
    List values = new ArrayList();
    try (Scanner rowScanner = new Scanner(line)) {
        rowScanner.useDelimiter(COMMA_DELIMITER);
        while (rowScanner.hasNext()) {
            values.add(rowScanner.next());
        }
    }
    return values;
}

以前と同様に、このアプローチでは、より高度なCSVは意図したとおりに解析されません。

4. OpenCSV

OpenCSVを使用して、より複雑なCSVファイルに対処できます。

OpenCSV is a third party library which provides an API to work with CSV files.CSVReaderreadNext()メソッドを使用して、ファイル内のレコードを読み取ります。

List> records = new ArrayList>();
try (CSVReader csvReader = new CSVReader(new FileReader("book.csv"));) {
    String[] values = null;
    while ((values = csvReader.readNext()) != null) {
        records.add(Arrays.asList(values));
    }
}

OpenCSVについてさらに深く掘り下げて学ぶために、OpenCSV tutorialを確認できます。

5. 結論

このクイックチュートリアルでは、CSVファイルを配列に読み込むさまざまな方法を検討しました。

いつものように、例の完全なソースコードはover on GitHubで入手できます。