Travailler avec CSV en Java : bibliothèques OpenCSV, Apache Commons CSV et Java Scanner

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travailler avec CSV en Java : aperçu des bibliothèques et exemples



CSV (Comma-Separated Values) est l'un des formats les plus courants pour l'échange de données tabulaires. Malgré son apparente simplicité, le parsing manuel de CSV en Java peut entraîner des erreurs dues à l'échappement des guillemets, aux virgules imbriquées et aux différents encodages. Dans cet article, nous examinerons trois approches principales : l'utilisation de OpenCSV, Apache Commons CSV et du java.util.Scanner standard.



1. OpenCSV — une bibliothèque flexible et populaire



OpenCSV est une bibliothèque légère et open source qui prend en charge la lecture et l'écriture de CSV, TSV et d'autres séparateurs. Elle gère automatiquement l'échappement, les guillemets et les champs multilignes.



Ajout de la dépendance (Maven)

<dependency>    <groupId>com.opencsv</groupId>    <artifactId>opencsv</artifactId>    <version>5.9</version></dependency>


Exemple : lecture de CSV dans une liste d'objets

import com.opencsv.CSVReader;import com.opencsv.bean.CsvToBean;import com.opencsv.bean.HeaderColumnNameMappingStrategy;import java.io.FileReader;import java.util.List;

public class OpenCSVExample { public static void main(String[] args) throws Exception { try (FileReader reader = new FileReader("users.csv")) { // Parsing manuel CSVReader csvReader = new CSVReader(reader); String[] line; while ((line = csvReader.readNext()) != null) { System.out.println("Nom : " + line[0] + ", Email : " + line[1]); } } }}


Exemple : mapping vers un Java Bean

public class User {    private String name;    private String email;    // getters et setters}

// Lecture avec mappingtry (FileReader reader = new FileReader("users.csv")) { HeaderColumnNameMappingStrategy<User> strategy = new HeaderColumnNameMappingStrategy<>(); strategy.setType(User.class);

CsvToBean<User> csvToBean = new CsvToBeanBuilder<User>(reader) .withMappingStrategy(strategy) .build();

List<User> users = csvToBean.parse();}


2. Apache Commons CSV — le standard d'Apache



Apache Commons CSV fait partie de l'écosystème Apache Commons. Il fournit des formats prêts à l'emploi (RFC 4180, Excel, MySQL) et un traitement par flux.



Ajout de la dépendance (Maven)

<dependency>    <groupId>org.apache.commons</groupId>    <artifactId>commons-csv</artifactId>    <version>1.11.0</version></dependency>


Exemple : lecture avec en-têtes

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;

public class CommonsCSVExample { public static void main(String[] args) throws Exception { try (Reader reader = new FileReader("data.csv"); CSVParser parser = CSVFormat.DEFAULT .withFirstRecordAsHeader() .parse(reader)) {

for (CSVRecord record : parser) { String id = record.get("ID"); String value = record.get("Valeur"); System.out.println(id + " -> " + value); } } }}


Écriture de CSV

import org.apache.commons.csv.CSVFormat;import org.apache.commons.csv.CSVPrinter;import java.io.FileWriter;import java.io.Writer;

try (Writer writer = new FileWriter("output.csv"); CSVPrinter printer = CSVFormat.DEFAULT .withHeader("Nom", "Âge") .print(writer)) {

printer.printRecord("Alice", 30); printer.printRecord("Bob", 25);}

Recommendations