我有这个问题:我想将一个ArrayList对象添加到文件" clientes.dat"为了存储该文件的信息并在以后显示它。但是,每当我再次写入所述文件时,新的ArrayList对象将覆盖第一个。
以下是代码:
import java.io.*;
import java.util.ArrayList;
public class Archivo implements Serializable{
private static final long serialVersionUID = 1L;
public static void nuevoCliente(Cliente cliente){
Cliente wo=cliente;
File f = new File("clientes.dat");
ArrayList<Cliente> woi=new ArrayList<>();
try {
FileOutputStream fop=new FileOutputStream(f);
ObjectOutputStream oos=new ObjectOutputStream(fop);
woi.add(wo);
oos.writeObject(woi);
oos.close();
} catch (IOException e) {
System.out.println("El Cliente no pudo ser agregado.");
}
}
@SuppressWarnings("unchecked")
public static void leerCliente() throws IOException, ClassNotFoundException{
try {
FileInputStream fis=new FileInputStream("clientes.dat");
ObjectInputStream ois=new ObjectInputStream(fis);
ArrayList<Cliente> woi=new ArrayList<>();
woi=(ArrayList<Cliente>)ois.readObject();
for(int i=0;i<woi.size();i++){
System.out.println(woi.get(i).getNombre());
}
ois.close();
}catch(IOException e){
System.out.println("El archivo no se pudo leer");
}
}
}
我尝试使用FileOutputStream fop=new FileOutputStream(f, true);
但是如果我这样做,leerCliente()方法将只返回存储的第一个ArrayList,而不是新的。