我正在尝试从 Java 修改 CSV 文件的数据。
在我的file CSV
我保存了以下数据:
"Nombre","Apellido","Intereses","Descripcion"
jose,guerra,algo,algo
pedro,perez,algo,algo
manuel,aguirre,algo,algo
类Persona
:
public class Persona {
String Nombre;
String Apellido;
String Intereses;
String Descripcion;
public Persona(String Nombre,String Apellido,String Intereses,String Descripcion)
{
this.Nombre = Nombre;
this.Apellido= Apellido;
this.Intereses = Intereses;
this.Descripcion = Descripcion;
}
//respectivos métodos get y set
public void setNome(String nombre){
this.Nombre = nombre;
}
}
和另一个类métodos
:
import java.util.ArrayList;
import java.util.Scanner;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import com.opencsv.*;
import java.io.File;
public class métodos {
static ArrayList<Persona> personas = new ArrayList<Persona>();
static String directory = "C:\\Users\\BryanPC\\Desktop\\personas.txt";
public métodos() {
}
// escribe los datos salvados en el ArrayList Personas (hay un error se
// imprimen 4 comillas de mas)
public static void escribeCSV() throws FileNotFoundException, IOException {
ArrayList<String[]> datos = personasToArrayListOfString();
CSVWriter csvOutput = new CSVWriter(new FileWriter(directory, true), ',', '"', "\r\n");
csvOutput.writeAll(datos, false);
csvOutput.close();
}
// lee los datos del CSV y los salva en el ArrayList Personas
public static void leeCSV() throws FileNotFoundException, IOException {
File file = new File(directory);
Scanner input = new Scanner(file);
input.next();
while (input.hasNext()) {
String s = input.next();
String[] data = s.split(",");
Persona p = arrayOfStringsToPersona(data);
personas.add(p);
}
}
// cambia el nombre de la primera persona salvada en el ArrayList Personas
// por Juan
public static void modificaCSV() {
for (Persona p : personas) {
p.setNome("juan");
break;
}
}
// transforma un objeto de tipo Persona a un ArrayList<String[]> para
// poder imprimirlo
public static ArrayList<String[]> personasToArrayListOfString() {
ArrayList<String[]> datos = new ArrayList<String[]>();
for (Persona p : personas) {
String[] s = new String[10];
String nombre = p.getNombre();
String apellido = p.getApellido();
String intereses = p.geIntereses();
String descripcion = p.getDescripcion();
s[0] = nombre;
s[1] = apellido;
s[2] = intereses;
s[3] = descripcion;
datos.add(s);
}
return datos;
}
// transforma un objeto de tipo String[] a uno de tipo Persona para asi
// poder añadirlo al ArrayList Personas
public static Persona arrayOfStringsToPersona(String[] a) {
String nombre = a[0];
String apellido = a[1];
String intereses = a[2];
String descripcion = a[3];
Persona p = new Persona(nombre, apellido, intereses, descripcion);
return p;
}
public static void main(String[] args) throws FileNotFoundException, IOException {
leeCSV();
// borra o sobreescribe el csv con nuevo nombre "juan"
modificaCSV();
metodoFaltante();
escribeCSV();
}
}
我想一旦您使用 readCSV 方法,您将不得不创建另一种方法来删除 CSV 文件中的数据。
或者覆盖写入 CSV 文件中的所有内容。
如果您想要将数据添加到文件(附加)中,那么您所做的是正确的:
您想要的是删除数据并写入新数据:
检查文档: https ://docs.oracle.com/javase/7/docs/api/java/io/FileWriter.html