Adicionando Dados a um Arquivo CSV Existente
Agora que criamos um arquivo CSV, vamos modificar nosso programa Java para anexar dados adicionais ao arquivo existente, em vez de sobrescrevê-lo.
- Crie um novo arquivo Java chamado
CSVAppendExample.java:
touch src/main/java/com/example/CSVAppendExample.java
- Abra
CSVAppendExample.java no editor WebIDE e adicione o seguinte 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", "robert.johnson@example.com"};
writer.writeNext(student3);
String[] student4 = {"Maria Garcia", "23", "maria.garcia@example.com"};
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 é semelhante ao nosso exemplo anterior, mas com duas diferenças importantes:
- Criamos o
FileWriter com um segundo parâmetro definido como true, o que o coloca no modo de anexação (append mode)
- Não escrevemos uma linha de cabeçalho, pois o arquivo já possui uma
- Execute o programa para anexar dados ao nosso arquivo CSV existente:
cd ~/project/csv-writer
mvn exec:java -Dexec.mainClass="com.example.CSVAppendExample"
- Vamos verificar o conteúdo do nosso arquivo CSV agora:
cat students.csv
Você deve ver os dados originais mais os registros recém-anexados:
"Name","Age","Email"
"John Doe","25","john.doe@example.com"
"Jane Smith","22","jane.smith@example.com"
"Robert Johnson","24","robert.johnson@example.com"
"Maria Garcia","23","maria.garcia@example.com"
Como você pode ver, os novos dados foram adicionados ao final do arquivo sem perturbar o conteúdo existente.
- Vamos criar mais um exemplo que demonstra a escrita de arquivos CSV com separadores personalizados:
touch src/main/java/com/example/CSVCustomExample.java
- Abra
CSVCustomExample.java no editor WebIDE e adicione o seguinte 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", "john.doe@example.com"};
writer.writeNext(student1);
String[] student2 = {"Jane Smith", "22", "jane.smith@example.com"};
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 exemplo cria um arquivo CSV usando ponto e vírgula como separadores em vez de vírgulas, o que é comum em alguns países europeus, onde as vírgulas são usadas como separadores decimais.
- Execute o exemplo de separador personalizado:
cd ~/project/csv-writer
mvn exec:java -Dexec.mainClass="com.example.CSVCustomExample"
- Verifique o conteúdo do novo arquivo CSV:
cat students_semicolon.csv
Você deve ver o arquivo CSV com ponto e vírgula como separadores:
"Name";"Age";"Email"
"John Doe";"25";"john.doe@example.com"
"Jane Smith";"22";"jane.smith@example.com"