CSVWriter.javawrite() pour les chaînes (avec échappement des guillemets doubles), les entiers longs, les dates (format ISO 8601) et les objets génériques. Séparateur, fin de ligne et format de date configurables. Utilisé pour les exportations de données ProjectForge (listes d'adresses, exportations de feuilles de temps, rapports financiers).java.io.PrintWriter / java.io.Writer — Sortie textejava.text.DateFormat / SimpleDateFormat — Formatage des dates pour les colonnes de date CSVjava.util.Date — Type de valeur Datejava.util.TimeZone — Fuseau horaire UTC pour le formatage des dates| Paramètre | Valeur par défaut | Méthode de définition |
|---|---|---|
| Séparateur CSV | ';' (point-virgule — convention européenne) | setCsvSeparator(char) |
| Fin de ligne | "\n" (saut de ligne Unix) | setCr(String) |
| Format de date | "yyyy-MM-dd HH:mm:ss.SSS" | setDateFormat(DateFormat) |
| Fuseau horaire des dates | UTC | Codé en dur dans le constructeur |
Toutes les méthodes write() retournent this (l'instance de CSVWriter), permettant le chaînage de méthodes :
csvWriter.write("Nom").write("Âge").write(42L).writeEndOfLine();
| Méthode | Formatage | Guillemetage |
|---|---|---|
write(String s) | Chaîne brute avec " échappé en "" (doublement) | Toujours encadré par "..." — suit les règles de guillemetage RFC 4180 |
write(long valeur) | Sortie numérique directe via PrintWriter.print() | Aucun — les nombres ne sont pas entre guillemets |
write(Date valeur) | Formaté via dateFormat.format() en UTC | Entre guillemets — les dates peuvent contenir des espaces ou des caractères spéciaux |
write(Object valeur) | Solution de repli : String.valueOf(valeur) | Aucun — les objets génériques ne sont pas entre guillemets (risqué pour les objets contenant des virgules/guillemets) |
La méthode write(String) implémente l'échappement CSV correct selon la RFC 4180 :
writeSeparator() avec le drapeau firstEntry)")"), le produit deux fois ("") — la séquence d'échappement CSV standard")writeLine(Object[] valeurs) — Écrit toutes les valeurs du tableau, puis appelle writeEndOfLine()writeEndOfLine() — Produit la fin de ligne configurée (\n par défaut) et réinitialise firstEntry = trueLe drapeau booléen firstEntry suit si nous sommes au début d'une ligne :
firstEntry == true : passe à false (première cellule — aucun séparateur nécessaire)firstEntry == false : produit le caractère séparateur avant la valeur de la celluleCSVWriter définit DEFAULT_CSV_SEPARATOR_CHAR = ';' comme constante publique, que CSVParser référence pour garantir un séparateur par défaut cohérent entre le lecteur et l'écrivain.
Cette implémentation est intentionnellement minimale par rapport à Apache Commons CSV ou OpenCSV :
CSVParser.parseHeadCols())write(Object) NE met PAS la sortie entre guillemets — elle appelle String.valueOf(valeur) et écrit directement. Si le toString() de l'objet retourne une chaîne contenant des virgules, des points-virgules ou des sauts de ligne, le CSV résultant sera mal formé. Cela est acceptable car les appelants sont censés utiliser les surcharges spécifiques aux types."yyyy-MM-dd HH:mm:ss.SSS" est de type ISO 8601 mais utilise un espace comme séparateur au lieu de 'T'.868d6abb7 2025 -> 2026 63081666f En-têtes des fichiers source : 2024 -> 2025. a73905c14 Correction de fautes de frappe dans les répertoires projectforge*/ Trouvé via codespell b6092df09 Copyright 2023 -> 2024 ab45d51fa Copyright 2001-2022 -> 2001-2023. 5f7ef41b8 Copyright 2021 -> 2022 ceb63e8a1 En-tête du code source : (C) 2001-2021. 7c79f1922 Copyright de l'en-tête source -> 2020.