Introduction
Dans ce laboratoire, vous apprendrez à écrire des données dans des fichiers CSV (Comma-Separated Values, Valeurs séparées par des virgules) en utilisant Java. Les fichiers CSV sont un format courant pour stocker des données tabulaires et sont largement utilisés pour l'échange de données entre différentes applications.
Vous utiliserez la bibliothèque OpenCSV, qui fournit des méthodes simples pour écrire et lire des fichiers CSV en Java. À la fin de ce laboratoire, vous aurez créé un programme Java capable d'écrire des données dans un nouveau fichier CSV et d'ajouter des données supplémentaires à un fichier existant.
Comprendre les fichiers CSV et configurer le projet
CSV (Comma-Separated Values, Valeurs séparées par des virgules) est un format de fichier simple utilisé pour stocker des données tabulaires. Chaque ligne dans un fichier CSV représente une ligne de données, et les valeurs au sein d'une ligne sont séparées par des virgules. Par exemple, un fichier CSV contenant des données sur des étudiants pourrait ressembler à ceci :
Name,Age,Email
John Doe,25,john.doe@example.com
Jane Smith,22,jane.smith@example.com
Commençons par créer un simple projet Maven pour travailler avec des fichiers CSV. Maven est un outil d'automatisation de build qui nous aidera à gérer les dépendances de notre projet.
- Tout d'abord, ouvrez le terminal dans WebIDE et accédez au répertoire du projet :
cd ~/project/csv-writer
- Créez un nouveau fichier nommé
pom.xmldans le répertoire du projet. Ce fichier définira la structure de notre projet et ses dépendances :
touch pom.xml
- Ouvrez le fichier
pom.xmldans l'éditeur WebIDE et ajoutez le contenu suivant :
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>csv-writer</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.4</version>
</dependency>
</dependencies>
</project>
Ce fichier XML définit notre projet et ajoute la bibliothèque OpenCSV (version 5.4) comme dépendance. OpenCSV fournit des classes simples pour lire et écrire des fichiers CSV.
- Créez la structure de répertoires pour notre code source Java :
mkdir -p src/main/java/com/example
Cette commande crée la structure de répertoires standard Maven pour le code source Java.
Création d'un programme simple d'écriture dans un fichier CSV
Maintenant que nous avons configuré notre projet avec la dépendance OpenCSV, nous pouvons créer un programme Java qui écrit des données dans un fichier CSV.
- Créez un nouveau fichier de classe Java nommé
CSVWriterExample.javadans la structure de répertoires que nous avons créée précédemment :
touch src/main/java/com/example/CSVWriterExample.java
- Ouvrez
CSVWriterExample.javadans l'éditeur WebIDE et ajoutez le code suivant :
package com.example;
import com.opencsv.CSVWriter;
import java.io.FileWriter;
import java.io.IOException;
public class CSVWriterExample {
public static void main(String[] args) {
try {
// Crée une nouvelle instance de CSVWriter
// Le premier paramètre est un FileWriter avec le chemin du fichier
// Le deuxième paramètre est le caractère de séparation (par défaut, une virgule)
// Le troisième paramètre est le caractère de guillemet (par défaut, le guillemet double)
// Le quatrième paramètre est le caractère d'échappement (par défaut, l'antislash)
// Le cinquième paramètre est le caractère de fin de ligne (par défaut, le saut de ligne)
CSVWriter writer = new CSVWriter(new FileWriter("students.csv"),
CSVWriter.DEFAULT_SEPARATOR,
CSVWriter.DEFAULT_QUOTE_CHARACTER,
CSVWriter.DEFAULT_ESCAPE_CHARACTER,
CSVWriter.DEFAULT_LINE_END);
// Écrit la ligne d'en-tête
String[] header = {"Name", "Age", "Email"};
writer.writeNext(header);
// Écrit les lignes de données
String[] student1 = {"John Doe", "25", "john.doe@example.com"};
writer.writeNext(student1);
String[] student2 = {"Jane Smith", "22", "jane.smith@example.com"};
writer.writeNext(student2);
// Ferme le writer pour vider le tampon et libérer les ressources
writer.close();
System.out.println("Fichier CSV créé avec succès !");
} catch (IOException e) {
System.out.println("Erreur lors de l'écriture dans le fichier CSV : " + e.getMessage());
e.printStackTrace();
}
}
}
Ce code effectue les opérations suivantes :
- Importe les classes nécessaires de la bibliothèque OpenCSV et du package d'entrée/sortie Java
- Crée un objet
CSVWriterqui écrira dans un fichier nomméstudents.csv - Écrit une ligne d'en-tête avec les noms des champs
- Écrit deux lignes de données sur des étudiants
- Ferme le writer pour s'assurer que toutes les données sont écrites dans le fichier
Le constructeur de CSVWriter a cinq paramètres :
FileWriter: Spécifie le fichier dans lequel écrire- Caractère de séparation : Le caractère utilisé pour séparer les champs (par défaut, une virgule)
- Caractère de guillemet : Le caractère utilisé pour citer les champs (par défaut, le guillemet double)
- Caractère d'échappement : Le caractère utilisé pour échapper les caractères spéciaux (par défaut, l'antislash)
- Caractère de fin de ligne : Le caractère utilisé pour terminer les lignes (par défaut, le saut de ligne)
- Compilez le programme Java en utilisant Maven :
cd ~/project/csv-writer
mvn compile
Cette commande compile notre code source Java en utilisant le système de build Maven.
Exécution du programme d'écriture dans un fichier CSV
Exécutons notre programme Java pour créer le fichier CSV et voir les résultats.
- Exécutez le programme Java compilé en utilisant Maven :
cd ~/project/csv-writer
mvn exec:java -Dexec.mainClass="com.example.CSVWriterExample"
Si vous voyez un message d'erreur concernant le exec-maven-plugin, nous devons l'ajouter à notre pom.xml :
- Ouvrez
pom.xmldans l'éditeur WebIDE et mettez-le à jour pour inclure leexec-maven-plugin:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>csv-writer</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.4</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<mainClass>com.example.CSVWriterExample</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
- Exécutez maintenant le programme à nouveau :
mvn exec:java
Vous devriez voir le message "CSV file created successfully!" dans la sortie du terminal.
- Vérifions que notre fichier CSV a été créé et contient les données attendues :
cat students.csv
La sortie devrait afficher le contenu du fichier CSV, qui ressemblera à ceci :
"Name","Age","Email"
"John Doe","25","john.doe@example.com"
"Jane Smith","22","jane.smith@example.com"
Notez que la sortie inclut des caractères de guillemet autour de chaque champ. C'est le comportement par défaut d'OpenCSV, qui permet de gérer les champs contenant des caractères spéciaux tels que des virgules.
Ajout de données à un fichier CSV existant
Maintenant que nous avons créé un fichier CSV, modifions notre programme Java pour ajouter des données supplémentaires au fichier existant au lieu de le remplacer.
- Créez un nouveau fichier Java nommé
CSVAppendExample.java:
touch src/main/java/com/example/CSVAppendExample.java
- Ouvrez
CSVAppendExample.javadans l'éditeur WebIDE et ajoutez le code suivant :
package com.example;
import com.opencsv.CSVWriter;
import java.io.FileWriter;
import java.io.IOException;
public class CSVAppendExample {
public static void main(String[] args) {
try {
// Crée un CSVWriter en mode ajout en définissant le deuxième paramètre de FileWriter sur true
CSVWriter writer = new CSVWriter(new FileWriter("students.csv", true));
// Écrit des données supplémentaires dans le fichier existant
String[] student3 = {"Robert Johnson", "24", "robert.johnson@example.com"};
writer.writeNext(student3);
String[] student4 = {"Maria Garcia", "23", "maria.garcia@example.com"};
writer.writeNext(student4);
// Ferme le writer
writer.close();
System.out.println("Données ajoutées au fichier CSV avec succès !");
} catch (IOException e) {
System.out.println("Erreur lors de l'ajout de données au fichier CSV : " + e.getMessage());
e.printStackTrace();
}
}
}
Ce code est similaire à notre exemple précédent, mais avec deux différences importantes :
- Nous créons le
FileWriteravec un deuxième paramètre défini surtrue, ce qui le met en mode ajout - Nous n'écrivons pas de ligne d'en-tête, car le fichier en a déjà une
- Exécutez le programme pour ajouter des données à notre fichier CSV existant :
cd ~/project/csv-writer
mvn exec:java -Dexec.mainClass="com.example.CSVAppendExample"
- Vérifions le contenu de notre fichier CSV maintenant :
cat students.csv
Vous devriez voir les données originales plus les enregistrements nouvellement ajoutés :
"Name","Age","Email"
"John Doe","25","john.doe@example.com"
"Jane Smith","22","jane.smith@example.com"
"Robert Johnson","24","robert.johnson@example.com"
"Maria Garcia","23","maria.garcia@example.com"
Comme vous pouvez le voir, les nouvelles données ont été ajoutées à la fin du fichier sans perturber le contenu existant.
- Créons un autre exemple qui montre comment écrire des fichiers CSV avec des séparateurs personnalisés :
touch src/main/java/com/example/CSVCustomExample.java
- Ouvrez
CSVCustomExample.javadans l'éditeur WebIDE et ajoutez le code suivant :
package com.example;
import com.opencsv.CSVWriter;
import java.io.FileWriter;
import java.io.IOException;
public class CSVCustomExample {
public static void main(String[] args) {
try {
// Crée un CSVWriter avec un point-virgule comme séparateur au lieu d'une virgule
CSVWriter writer = new CSVWriter(new FileWriter("students_semicolon.csv"),
';',
CSVWriter.DEFAULT_QUOTE_CHARACTER,
CSVWriter.DEFAULT_ESCAPE_CHARACTER,
CSVWriter.DEFAULT_LINE_END);
// Écrit la ligne d'en-tête
String[] header = {"Name", "Age", "Email"};
writer.writeNext(header);
// Écrit les lignes de données
String[] student1 = {"John Doe", "25", "john.doe@example.com"};
writer.writeNext(student1);
String[] student2 = {"Jane Smith", "22", "jane.smith@example.com"};
writer.writeNext(student2);
// Ferme le writer
writer.close();
System.out.println("Fichier CSV avec point-virgule comme séparateur créé avec succès !");
} catch (IOException e) {
System.out.println("Erreur lors de l'écriture dans le fichier CSV : " + e.getMessage());
e.printStackTrace();
}
}
}
Cet exemple crée un fichier CSV en utilisant des points-virgules comme séparateurs au lieu de virgules, ce qui est courant dans certains pays européens où les virgules sont utilisées comme séparateurs décimaux.
- Exécutez l'exemple avec le séparateur personnalisé :
cd ~/project/csv-writer
mvn exec:java -Dexec.mainClass="com.example.CSVCustomExample"
- Vérifiez le contenu du nouveau fichier CSV :
cat students_semicolon.csv
Vous devriez voir le fichier CSV avec des points-virgules comme séparateurs :
"Name";"Age";"Email"
"John Doe";"25";"john.doe@example.com"
"Jane Smith";"22";"jane.smith@example.com"
Résumé
Dans ce laboratoire, vous avez appris à écrire des données dans des fichiers CSV en utilisant Java avec la bibliothèque OpenCSV. Vous avez réussi à :
- Configurer un projet Java avec la dépendance OpenCSV
- Créer un programme Java de base pour écrire des données dans un nouveau fichier CSV
- Modifier le programme pour ajouter des données à un fichier CSV existant
- Créer un écrivain CSV personnalisé avec un caractère de séparation différent
Ces compétences sont utiles pour de nombreuses applications, telles que l'exportation de données, la génération de rapports et l'échange de données entre systèmes. Le format CSV est largement utilisé en raison de sa simplicité et de sa compatibilité avec les logiciels de tableur et les outils d'analyse de données.
Voici quelques points clés à retenir :
- La classe
CSVWriterd'OpenCSV offre un moyen simple d'écrire des fichiers CSV en Java - Pour créer un nouveau fichier CSV, utilisez
new FileWriter(filename)avec leCSVWriter - Pour ajouter des données à un fichier CSV existant, utilisez
new FileWriter(filename, true)avec leCSVWriter - Toujours fermer le writer en utilisant
writer.close()pour vous assurer que toutes les données sont écrites dans le fichier - Vous pouvez personnaliser le séparateur, le caractère de guillemet et d'autres aspects du format CSV
Avec ces bases, vous devriez être en mesure d'intégrer des fonctionnalités d'écriture de CSV dans vos applications Java.



