Escribir cadenas en un archivo CSV en Java
-
Uso de
PrintWriter
para leer y escribir en un archivo CSV en Java -
Uso de la biblioteca
OpenCSV
para leer y escribir 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 Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn