将新的ArrayList对象写入文件而不覆盖其内容

时间:2017-11-16 06:26:55

标签: java

我有这个问题:我想将一个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,而不是新的。

0 个答案:

没有答案