Escribir cadenas en un archivo CSV en Java

Rupam Yadav 12 octubre 2023
  1. Uso de PrintWriter para leer y escribir en un archivo CSV en Java
  2. Uso de la biblioteca OpenCSV para leer y escribir en un archivo CSV en Java
Escribir cadenas en un archivo CSV en Java

CSV significa Comma Separated Values; es un formato de uso común para transferencias de datos voluminosas entre sistemas. También hay muchas bibliotecas de analizadores que se pueden utilizar junto con Java para poder trabajar con este formato.

Uso de PrintWriter para leer y escribir en un archivo CSV en Java

La función PrinterWriter en Java es una clase de escritor que se utiliza para imprimir la representación formateada de objetos en un flujo de salida de texto. Creamos un objeto writer pasando un nuevo archivo llamado test.csv como destino para el escritor. Aquí, el objeto sb agrega una cadena especificada a la secuencia de caracteres.

El método write() en la instancia de writer escribe el contenido textual en la secuencia. El método flush() descarga el contenido en el archivo, y el método close() cierra permanentemente la secuencia. También podemos leer el contenido del archivo test.csv.

El método readCSVFile() se llama en la instancia de la clase TestCSV. Aquí, creamos una instancia de la clase Scanner con valores del archivo especificado. Divide los datos en tokens utilizando un patrón delimitador. hasNextLine() devuelve verdadero si el escáner tiene otra línea de entrada. Por lo tanto, leemos cada línea de datos del token usando el método next() y lo almacenamos en un array, finalmente imprimiendo la salida.

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;
  }
}

Producción

done!
[[id, Name, Address], [101, John Doe, Las Vegas]]

Uso de la biblioteca OpenCSV para leer y escribir en un archivo CSV en Java

La dependencia de maven para esta biblioteca se proporciona a continuación:

 <dependency>
      <groupId>com.opencsv</groupId>
      <artifactId>opencsv</artifactId>
      <version>5.4</version>
 </dependency>

OpenCsv es una biblioteca analizadora simple para Java; tiene un conjunto de clases OpenCsv que usamos para leer y escribir en un archivo CSV. En el método main(), primero llamamos al método para escribir en un archivo CSV usando la clase CSVWriter. Esta clase se utiliza para escribir datos CSV en la implementación del escritor.

Creamos una instancia de writer de CSVWriter y llamamos a la función writeNext() en este objeto para generar un archivo CSV con datos de un array de cadenas separadas mediante un delimitador. El método close() cierra el flujo del escritor.

Para leer los datos del archivo que creamos en formato CSV, llamamos al método readCSVFile en el objeto de clase principal, donde analizamos el archivo CSV. Para leer todos los registros en una lista a la vez, usamos el método readAll(). Repasamos cada registro y lo imprimimos.

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));
    }
  }
}

Producción

[2, Virat, Kohli, India, 30]
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

Artículo relacionado - Java CSV

Artículo relacionado - Java String