Écrire des chaînes dans un fichier CSV en Java
-
Utilisation de
PrintWriter
pour lire et écrire dans un fichier CSV en Java -
Utilisation de la bibliothèque
OpenCSV
pour lire et écrire dans un fichier CSV en Java
CSV signifie Comma Separated Values
; c’est un format couramment utilisé pour les transferts de données volumineux entre les systèmes. Il existe également de nombreuses bibliothèques d’analyseurs à utiliser avec Java pour pouvoir travailler avec ce format.
Utilisation de PrintWriter
pour lire et écrire dans un fichier CSV en Java
La fonction PrinterWriter
en Java est une classe d’écriture utilisée pour imprimer une représentation formatée d’objets dans un flux de sortie de texte. Nous créons un objet writer
en passant un nouveau fichier nommé test.csv
comme destination du rédacteur. Ici, l’objet sb
ajoute une chaîne spécifiée à la séquence de caractères.
La méthode write()
sur l’instance writer
écrit le contenu textuel dans le flux. La méthode flush()
vide le contenu dans le fichier et la méthode close()
ferme définitivement le flux. On peut aussi lire le contenu du fichier test.csv
.
La méthode readCSVFile()
est appelée sur l’instance de la classe TestCSV
. Ici, nous avons créé une instance de la classe Scanner
avec les valeurs du fichier spécifié. Il divise les données en jetons à l’aide d’un modèle de délimiteur. Le hasNextLine()
renvoie vrai si le scanner a une autre ligne d’entrée. Ainsi, nous lisons chaque ligne de données de jeton à l’aide de la méthode next()
et les stockons dans un tableau, pour finalement afficher la sortie.
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class TestCSV {
public static void main(String args[]) {
try (PrintWriter writer = new PrintWriter(new File("test.csv"))) {
StringBuilder sb = new StringBuilder();
sb.append("id");
sb.append(',');
sb.append("Name");
sb.append(',');
sb.append("Address");
sb.append('\n');
sb.append("101");
sb.append(',');
sb.append("John Doe");
sb.append(',');
sb.append("Las Vegas");
sb.append('\n');
writer.write(sb.toString());
writer.close();
System.out.println("done!");
} catch (FileNotFoundException e) {
System.out.println(e.getMessage());
}
TestCSV testCSV = new TestCSV();
testCSV.readCSVFile();
}
public void readCSVFile() {
List<List<String>> records = new ArrayList<>();
try (Scanner scanner = new Scanner(new File("test.csv"));) {
while (scanner.hasNextLine()) {
records.add(getRecordFromLine(scanner.nextLine()));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
System.out.println(records.toString());
}
private List<String> getRecordFromLine(String line) {
List<String> values = new ArrayList<String>();
try (Scanner rowScanner = new Scanner(line)) {
rowScanner.useDelimiter(",");
while (rowScanner.hasNext()) {
values.add(rowScanner.next());
}
}
return values;
}
}
Production
done ![[ id, Name, Address ], [ 101, John Doe, Las Vegas ]]
Utilisation de la bibliothèque OpenCSV
pour lire et écrire dans un fichier CSV en Java
La dépendance maven pour cette bibliothèque est donnée ci-dessous :
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.4</version>
</dependency>
Le OpenCsv
est une simple bibliothèque d’analyseur pour Java ; il a un ensemble de classes OpenCsv que nous utilisons pour lire et écrire dans un fichier CSV. Dans la méthode main()
, nous appelons d’abord la méthode pour écrire dans un fichier CSV en utilisant la classe CSVWriter
. Cette classe est utilisée pour écrire des données CSV dans l’implémentation de l’enregistreur.
Nous créons une instance writer
de CSVWriter
et appelons la fonction writeNext()
sur cet objet pour générer un fichier CSV avec les données d’un tableau de chaînes séparées par un délimiteur. La méthode close()
ferme le flux d’écriture.
Pour lire les données du fichier que nous avons créé au format CSV, nous appelons la méthode readCSVFile
sur l’objet de classe principal, où nous analysons le fichier CSV. Pour lire tous les enregistrements dans une liste à la fois, nous utilisons la méthode readAll()
. Nous parcourons chaque enregistrement et l’imprimons.
import com.opencsv.CSVReader;
import com.opencsv.CSVWriter;
import com.opencsv.exceptions.CsvException;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
public class CSVLibrary {
public static void main(String args[]) {
CSVLibrary csvLibrary = new CSVLibrary();
csvLibrary.writeToCsv();
csvLibrary.readCSVFile();
}
public void writeToCsv() {
String csv = "data.csv";
try {
CSVWriter writer = new CSVWriter(new FileWriter(csv));
String[] record = "2,Virat,Kohli,India,30".split(",");
writer.writeNext(record);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public void readCSVFile() {
CSVReader reader = null;
try {
reader = new CSVReader(new FileReader("data.csv"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
List<String[]> allRows = null;
try {
allRows = reader.readAll();
} catch (IOException e) {
e.printStackTrace();
} catch (CsvException e) {
e.printStackTrace();
}
for (String[] row : allRows) {
System.out.println(Arrays.toString(row));
}
}
}
Production
[2, Virat, Kohli, India, 30]
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn