Écrire des chaînes dans un fichier CSV en Java

Rupam Yadav 12 octobre 2023
  1. Utilisation de PrintWriter pour lire et écrire dans un fichier CSV en Java
  2. Utilisation de la bibliothèque OpenCSV pour lire et écrire dans un fichier CSV en Java
Écrire des chaînes 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]
Auteur: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

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

Article connexe - Java CSV

Article connexe - Java String