Lesen einer CSV-Datei in ein Array

Einlesen einer CSV-Datei in ein Array

1. Überblick

Einfach ausgedrückt, enthält eine CSV-Datei (Comma Separated Values) organisierte Informationen, die durch ein Komma getrennt sind.

In diesem Tutorial werden verschiedene Möglichkeiten zum Einlesen einer CSV-Datei in ein Array untersucht.

2. BufferedReader injava.io

Zuerst lesen wir die Datensätze Zeile für Zeile mitreadLine() inBufferedReader. Dann teilen wir die Zeile basierend auf dem Komma-Trennzeichen in Token auf.

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));
    }
}

Beachten Sie bei diesem Ansatz, dass komplexere CSVs (z. Anführungszeichen oder das Einfügen von Kommas als Werte werden nicht wie beabsichtigt analysiert.

3. Scanner injava.util

Als Nächstes verwenden wirjava.util.Scanner, um den Inhalt der Datei zu durchlaufen und Zeilen nacheinander seriell abzurufen:

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

Dann analysieren wir die Zeilen und speichern sie in einem Array:

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;
}

Wie zuvor werden bei diesem Ansatz anspruchsvollere CSVs nicht wie beabsichtigt analysiert.

4. OpenCSV

Mit OpenCSV können wir komplexere CSV-Dateien ansprechen.

OpenCSV is a third party library which provides an API to work with CSV files. Wir verwenden diereadNext()-Methode inCSVReader, um die Datensätze in der Datei zu lesen:

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));
    }
}

Um tiefer zu graben und mehr über OpenCSV zu erfahren, können wir unsereOpenCSV tutorial überprüfen.

5. Fazit

In diesem kurzen Tutorial haben wir verschiedene Möglichkeiten zum Lesen von CSV-Dateien in ein Array untersucht.

Wie immer ist der vollständige Quellcode der Beispieleover on GitHub verfügbar.