Arbeiten mit CSV in Java: OpenCSV und Apache Commons CSV
CSV (Comma-Separated Values) ist eines der gängigsten Formate zum Speichern und Austauschen von Tabellendaten. Java verfügt über keine integrierte Bibliothek für die komfortable Arbeit mit CSV (nur manuelles Parsing über BufferedReader), daher verwenden Entwickler externe Werkzeuge. In diesem Artikel betrachten wir zwei beliebte Bibliotheken: OpenCSV und Apache Commons CSV. Sie erfahren, wie Sie CSV-Dateien mit Codebeispielen lesen, schreiben und verarbeiten.
1. OpenCSV: Einfaches Parsing und Annotationen
OpenCSV ist eine einfache und effiziente Bibliothek für die Arbeit mit CSV. Sie unterstützt zeilenweises Lesen, Mapping auf Java-Objekte (über Annotationen @CsvBindByName) sowie das Schreiben von Daten.
Einbindung (Maven)
<dependency> <groupId>com.opencsv</groupId> <artifactId>opencsv</artifactId> <version>5.9</version></dependency>CSV in eine Liste von Zeilen lesen
import com.opencsv.CSVReader;import java.io.FileReader;import java.util.List;
public class OpenCsvExample { public static void main(String[] args) throws Exception { try (CSVReader reader = new CSVReader(new FileReader("data.csv"))) { List<String[]> rows = reader.readAll(); for (String[] row : rows) { System.out.println(String.join(" | ", row)); } } }}Mapping auf ein Java-Objekt
import com.opencsv.bean.CsvBindByName;import com.opencsv.bean.CsvToBean;import com.opencsv.bean.CsvToBeanBuilder;import java.io.FileReader;import java.util.List;
public class User { @CsvBindByName(column = "name") private String name;
@CsvBindByName(column = "email") private String email;
// Getter und Setter}
// Lesentry (FileReader reader = new FileReader("users.csv")) { CsvToBean<User> csvToBean = new CsvToBeanBuilder<User>(reader) .withType(User.class) .withIgnoreLeadingWhiteSpace(true) .build(); List<User> users = csvToBean.parse(); users.forEach(u -> System.out.println(u.getName() + " - " + u.getEmail()));}CSV schreiben
import com.opencsv.CSVWriter;import java.io.FileWriter;
try (CSVWriter writer = new CSVWriter(new FileWriter("output.csv"))) { String[] header = {"Name", "Age", "City"}; writer.writeNext(header); writer.writeNext(new String[]{"Alice", "30", "Moscow"}); writer.writeNext(new String[]{"Bob", "25", "SPb"});}2. Apache Commons CSV: Flexibilität und Leistung
Apache Commons CSV ist Teil des Apache Commons-Ökosystems. Es zeichnet sich durch hohe Leistung, Unterstützung verschiedener Formate (CSV, TSV, Excel) und anpassbare Trennzeichen aus.
Einbindung (Maven)
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-csv</artifactId> <version>1.11.0</version></dependency>CSV mit Kopfzeilen lesen
import org.apache.commons.csv.CSVFormat;import org.apache.commons.csv.CSVParser;import org.apache.commons.csv.CSVRecord;import java.io.FileReader;import java.io.Reader;
try (Reader in = new FileReader("data.csv"); CSVParser parser = CSVFormat.DEFAULT .withFirstRecordAsHeader() .parse(in)) { for (CSVRecord record : parser) { String name = record.get("name"); String email = record.get("email"); System.out.println(name + " : " + email); }}CSV mit benutzerdefiniertem Trennzeichen schreiben
import org.apache.commons.csv.CSVFormat;import org.apache.commons.csv.CSVPrinter;import java.io.FileWriter;import Auch in der Bibliothek
Helmet für JavaScript (Node.js): Vollständige Anleitung mit Beispielen
Testen in JavaScript (Node.js): Frameworks und Werkzeuge
HTML-Parsing in Go (Golang): Bibliotheken und Codebeispiele
godotenv für Go: Vollständige Anleitung mit Beispielen
JWT-Token in Java: Vollständiger Leitfaden zur Arbeit mit JSON Web Tokens