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.java dans 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
FileWriter avec un deuxième paramètre défini sur true, 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.java dans 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"