OpenCSV CSVReader CSVWriter Beispiel

Einleitung

OpenCSV ist eine Java-Bibliothek, die das Einlesen und Ausgeben von CSV-Dateien (Comma-Separated Values) erheblich vereinfacht. Sie stellt eine unkomplizierte Schnittstelle für den Umgang mit CSV-Daten bereit, ermöglicht das präzise Verarbeiten von Werten und das Erzeugen neuer CSV-Dateien. In diesem Artikel demonstrieren wir die Funktionsweise von OpenCSV anhand einer konkreten Anwendung. Wir erläutern, wie man CSVReader und CSVWriter nutzt, um Daten aus einer bestehenden CSV-Datei auszulesen und eine modifizierte CSV-Datei zu erstellen.

CSVReader

Auslesen von Datensätzen aus einer CSV-Datei

Für das Einlesen von Daten aus einer CSV-Datei verwenden wir den CSVReader aus der OpenCSV-Bibliothek. Der CSVReader erfordert den Dateipfad als Parameter im Konstruktor. Hier ist ein Beispielcode:

import com.opencsv.CSVReader;

public class CSVReaderBeispiel {

public static void main(String[] args) {
try (CSVReader reader = new CSVReader(new FileReader(„daten.csv“))) {
String[] nächsteZeile;
while ((nächsteZeile = reader.readNext()) != null) {
// Verarbeitung der Zeile
for (String wert : nächsteZeile) {
System.out.println(wert);
}
}
} catch (FileNotFoundException e) {
// Behandlung: Datei nicht gefunden
} catch (IOException e) {
// Behandlung: Fehler beim Lesen der Datei
}
}
}

Dieser Code öffnet die CSV-Datei daten.csv und liest die Daten zeilenweise. Jede Zeile wird in ein Array von Zeichenketten, nächsteZeile, aufgeteilt. Der Code durchläuft dieses Array und gibt den Inhalt jeder Spalte auf der Konsole aus.

Optionen für CSVReader

  • skipLines(int skipLines): Überspringt die definierte Anzahl von Zeilen am Beginn der Datei.
  • readSkipLines(): Liest und verwirft die angegebene Anzahl von Zeilen am Anfang der Datei.
  • setSkipEmptyRecords(boolean skipEmptyRecords): Ignoriert leere Datensätze (Zeilen mit ausschließlich leeren Werten).
  • setQuoteChar(char quoteChar): Definiert das Zeichen, das als Anführungszeichen verwendet wird.
  • setSeparator(char separator): Legt das Zeichen fest, das als Trennzeichen zwischen den Feldern dient.

CSVWriter

Schreiben von Daten in eine CSV-Datei

Für das Schreiben von Daten in eine CSV-Datei kommt der CSVWriter aus der OpenCSV-Bibliothek zum Einsatz. Der CSVWriter benötigt ebenfalls den Dateipfad als Konstruktorparameter. Hier ein Beispielcode:

import com.opencsv.CSVWriter;

public class CSVWriterBeispiel {

public static void main(String[] args) {
try (CSVWriter writer = new CSVWriter(new FileWriter(„ausgabe.csv“))) {
String[] kopfzeile = {„Name“, „Alter“, „Stadt“};
writer.writeNext(kopfzeile);

String[] datensatz1 = {„Max“, „30“, „Berlin“};
writer.writeNext(datensatz1);

String[] datensatz2 = {„Maria“, „25“, „Hamburg“};
writer.writeNext(datensatz2);
} catch (IOException e) {
// Behandlung: Fehler beim Schreiben der Datei
}
}
}

Dieser Code öffnet die CSV-Datei ausgabe.csv und schreibt zeilenweise Daten hinein. Zuerst wird eine Kopfzeile mit den Spaltennamen eingefügt, danach folgen zwei Datensätze.

Optionen für CSVWriter

  • writeAll(List<String[]> records): Schreibt alle übergebenen Zeilen in die CSV-Datei.
  • flush(): Schreibt den aktuellen Inhalt des Puffers in die CSV-Datei.
  • setQuoteChar(char quoteChar): Definiert das Zeichen, das als Anführungszeichen verwendet wird.
  • setSeparator(char separator): Legt das Zeichen fest, das als Trennzeichen zwischen den Feldern dient.
  • setEscapeChar(char escapeChar): Bestimmt das Zeichen, das zum Maskieren von Sonderzeichen verwendet wird.

Fazit

OpenCSV erweist sich als ein leistungsfähiges Werkzeug, das den Umgang mit CSV-Dateien in Java deutlich vereinfacht. Mithilfe der Klassen CSVReader und CSVWriter können Entwickler Daten aus CSV-Dateien effizient auslesen und neue CSV-Dateien erstellen. Die Bibliothek bietet eine Vielzahl von Optionen, um die Lese- und Schreibprozesse an spezifische Anforderungen anzupassen.

Häufig gestellte Fragen

1. Was ist OpenCSV?
OpenCSV ist eine spezialisierte Java-Bibliothek für das Lesen und Schreiben von CSV-Dateien.

2. Wie öffne ich eine CSV-Datei mit OpenCSV?
Sie initialisieren einen CSVReader mit dem Dateipfad als Argument des Konstruktors.

3. Wie schreibe ich Daten in eine CSV-Datei mit OpenCSV?
Sie erzeugen einen CSVWriter mit dem Dateipfad als Parameter des Konstruktors.

4. Können leere Zeilen in einer CSV-Datei übersprungen werden?
Ja, mit der Methode setSkipEmptyRecords(boolean skipEmptyRecords) können Sie leere Zeilen überspringen.

5. Ist es möglich, ein benutzerdefiniertes Trennzeichen zu verwenden?
Ja, mit der Methode setSeparator(char separator) können Sie ein individuelles Trennzeichen festlegen.

6. Wie verhindere ich das Escaping von Sonderzeichen?
Mithilfe der Methode setEscapeChar(char escapeChar) können Sie festlegen, welches Zeichen für das Escaping verwendet wird oder das Escaping ganz deaktivieren.

7. Was unterscheidet CSVReader und CSVWriter?
CSVReader wird zum Einlesen von Daten aus CSV-Dateien verwendet, während CSVWriter für das Schreiben von Daten in CSV-Dateien zuständig ist.

8. Gibt es eine Möglichkeit, sämtliche Daten einer CSV-Datei in eine Liste einzulesen?
Ja, die Methode readAll() des CSVReaders ermöglicht das Einlesen aller Daten in eine Liste.

9. Wie kann man eine Kopfzeile in eine CSV-Datei schreiben?
Mit der Methode writeNext() des CSVWriters und einem String-Array für die Kopfzeile können Sie diese in die Datei schreiben.

10. Wie kann ich eine CSV-Datei mit einer speziellen Kodierung einlesen?
Sie können dem Konstruktor des CSVReaders oder CSVWriters ein Charset-Objekt übergeben, um die Kodierung anzugeben.