Einlesen einer CSV-Datei in ein Array

1. Übersicht

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

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

2. BufferedReader in java.io.

Zuerst lesen wir die Datensätze Zeile für Zeile mit readLine () in BufferedReader . 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, dass bei diesem Ansatz komplexere CSVs (z. B. Anführungszeichen oder Einfügen von Kommas als Werte) nicht wie beabsichtigt analysiert werden.

3. Scanner in java.util

Als Nächstes verwenden wir einen java.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 adressieren.

OpenCSV ist eine Bibliothek eines Drittanbieters, die eine API für die Arbeit mit CSV-Dateien bereitstellt. Wir werden die readNext () -Methode in CSVReader verwenden , 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, lesen Sie unser OpenCSV-Tutorial.

5. Schlussfolgerung

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 Beispiele auf GitHub verfügbar.