Java 在文件中写入对象的arraylist

Java 在文件中写入对象的arraylist,java,Java,我想在文件中写入对象的arraylist。但文件中只有一个对象。首先,我获取所有存储的对象,然后添加新对象,然后将整个arrayList写入文件 这是我的密码 public void write(UserDetail u1) throws FileNotFoundException { ArrayList<UserDetail> al = new ArrayList<UserDetail>(); FileInputStream fin = new File

我想在文件中写入对象的arraylist。但文件中只有一个对象。首先,我获取所有存储的对象,然后添加新对象,然后将整个arrayList写入文件

这是我的密码

public void write(UserDetail u1) throws FileNotFoundException {
    ArrayList<UserDetail> al = new ArrayList<UserDetail>();
    FileInputStream fin = new FileInputStream(FILEPATH);

    try {

        if (fin.available() != 0) {
            ObjectInputStream ois = new ObjectInputStream(fin);
            while (fin.available() != 0 && ois.available() != 0) {
                try {
                    al.add((UserDetail) ois.readObject());

                } catch (ClassNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {

                    if (ois != null) {
                        ois.close();

                    }
                }
            }
        }
        al.add(u1);
        FileOutputStream fos = new FileOutputStream(FILEPATH);
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        oos.writeObject(al);
        oos.flush();
        oos.close();
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        throw e;
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
public void write(UserDetail u1)抛出FileNotFoundException{
ArrayList al=新的ArrayList();
FileInputStream fin=新的FileInputStream(FILEPATH);
试一试{
如果(财务可用()!=0){
ObjectInputStream ois=新ObjectInputStream(fin);
while(fin.available()!=0&&ois.available()!=0){
试一试{
al.add((UserDetail)ois.readObject());
}catch(classnotfounde异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(例外e){
e、 printStackTrace();
}最后{
如果(ois!=null){
ois.close();
}
}
}
}
al.添加(u1);
FileOutputStream fos=新的FileOutputStream(FILEPATH);
ObjectOutputStream oos=新的ObjectOutputStream(fos);
oos.writeObject(al);
oos.flush();
oos.close();
}catch(filenotfounde异常){
//TODO自动生成的捕捉块
投掷e;
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}

帮帮我吧……您正在读取类型为
UserDetail
的对象,但正在写入类型为
ArrayList
的对象。应该是:

al = (ArrayList)ois.readObject ();
而不是

al.add ((UserDetail) ois.readObject ());

您正在读取类型为
UserDetail
的对象,但正在写入类型为
ArrayList
的对象。应该是:

al = (ArrayList)ois.readObject ();
而不是

al.add ((UserDetail) ois.readObject ());

可以显示,在哪里调用此函数,以及在哪里初始化作为此函数参数传递的对象。可以显示,在哪里调用此函数,以及在哪里初始化作为此函数参数传递的对象。