Agregar datos a un archivo CSV existente
Ahora que hemos creado un archivo CSV, modifiquemos nuestro programa Java para agregar datos adicionales al archivo existente en lugar de sobrescribirlo.
- Crea un nuevo archivo Java llamado
CSVAppendExample.java
:
touch src/main/java/com/example/CSVAppendExample.java
- Abre
CSVAppendExample.java
en el editor de WebIDE y agrega el siguiente código:
package com.example;
import com.opencsv.CSVWriter;
import java.io.FileWriter;
import java.io.IOException;
public class CSVAppendExample {
public static void main(String[] args) {
try {
// Create a CSVWriter in append mode by setting the second parameter of FileWriter to true
CSVWriter writer = new CSVWriter(new FileWriter("students.csv", true));
// Write additional data to the existing file
String[] student3 = {"Robert Johnson", "24", "[email protected]"};
writer.writeNext(student3);
String[] student4 = {"Maria Garcia", "23", "[email protected]"};
writer.writeNext(student4);
// Close the writer
writer.close();
System.out.println("Data appended to CSV file successfully!");
} catch (IOException e) {
System.out.println("Error appending to CSV file: " + e.getMessage());
e.printStackTrace();
}
}
}
Este código es similar al ejemplo anterior, pero con dos diferencias importantes:
- Creamos el
FileWriter
con un segundo parámetro establecido en true
, lo que lo pone en modo de adición (append mode).
- No escribimos una fila de encabezado, ya que el archivo ya tiene una.
- Ejecuta el programa para agregar datos a nuestro archivo CSV existente:
cd ~/project/csv-writer
mvn exec:java -Dexec.mainClass="com.example.CSVAppendExample"
- Veamos el contenido de nuestro archivo CSV ahora:
cat students.csv
Deberías ver los datos originales más los registros recién agregados:
"Name","Age","Email"
"John Doe","25","[email protected]"
"Jane Smith","22","[email protected]"
"Robert Johnson","24","[email protected]"
"Maria Garcia","23","[email protected]"
Como puedes ver, los nuevos datos se agregaron al final del archivo sin alterar el contenido existente.
- Creemos un ejemplo más que demuestre cómo escribir archivos CSV con separadores personalizados:
touch src/main/java/com/example/CSVCustomExample.java
- Abre
CSVCustomExample.java
en el editor de WebIDE y agrega el siguiente código:
package com.example;
import com.opencsv.CSVWriter;
import java.io.FileWriter;
import java.io.IOException;
public class CSVCustomExample {
public static void main(String[] args) {
try {
// Create a CSVWriter with semicolon as separator instead of comma
CSVWriter writer = new CSVWriter(new FileWriter("students_semicolon.csv"),
';',
CSVWriter.DEFAULT_QUOTE_CHARACTER,
CSVWriter.DEFAULT_ESCAPE_CHARACTER,
CSVWriter.DEFAULT_LINE_END);
// Write header line
String[] header = {"Name", "Age", "Email"};
writer.writeNext(header);
// Write data lines
String[] student1 = {"John Doe", "25", "[email protected]"};
writer.writeNext(student1);
String[] student2 = {"Jane Smith", "22", "[email protected]"};
writer.writeNext(student2);
// Close the writer
writer.close();
System.out.println("CSV file with semicolon separator created successfully!");
} catch (IOException e) {
System.out.println("Error writing to CSV file: " + e.getMessage());
e.printStackTrace();
}
}
}
Este ejemplo crea un archivo CSV utilizando punto y coma como separadores en lugar de comas, lo cual es común en algunos países europeos donde se utilizan las comas como separadores decimales.
- Ejecuta el ejemplo con separador personalizado:
cd ~/project/csv-writer
mvn exec:java -Dexec.mainClass="com.example.CSVCustomExample"
- Verifica el contenido del nuevo archivo CSV:
cat students_semicolon.csv
Deberías ver el archivo CSV con punto y coma como separadores:
"Name";"Age";"Email"
"John Doe";"25";"[email protected]"
"Jane Smith";"22";"[email protected]"