Java 在文件中写入对象的arraylist
我想在文件中写入对象的arraylist。但文件中只有一个对象。首先,我获取所有存储的对象,然后添加新对象,然后将整个arrayList写入文件 这是我的密码Java 在文件中写入对象的arraylist,java,Java,我想在文件中写入对象的arraylist。但文件中只有一个对象。首先,我获取所有存储的对象,然后添加新对象,然后将整个arrayList写入文件 这是我的密码 public void write(UserDetail u1) throws FileNotFoundException { ArrayList<UserDetail> al = new ArrayList<UserDetail>(); FileInputStream fin = new File
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 ());
可以显示,在哪里调用此函数,以及在哪里初始化作为此函数参数传递的对象。可以显示,在哪里调用此函数,以及在哪里初始化作为此函数参数传递的对象。