我试图在一个dat文件中存储我制作的类型的arraylist,这样每次关闭程序时数据都不会丢失。我之前从未做过序列化的任何事情,从查看本网站上的其他问题我认为这就是我想要的。非常感谢任何帮助或见解!
答案 0 :(得分:0)
ArrayList实现了Serializable,所以你可以序列化它。但请记住,ArrayList只是项目的集合,因此请确保所有项目也可序列化。这是一个例子
import java.util.ArrayList;
import java.io.*;
public class ListSerExample {
public static void main(String[] args) {
ArrayList<String> lst = new ArrayList<>();
lst.add("a");
lst.add("b");
lst.add("c");
try (FileOutputStream fos = new FileOutputStream("foo.dat"); ObjectOutputStream oos = new ObjectOutputStream(fos);) {
oos.writeObject(lst);
oos.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
ArrayList<String> deserialized= new ArrayList<>();
try (FileInputStream fis = new FileInputStream("foo.dat");
ObjectInputStream ois = new ObjectInputStream(fis);){
deserialized = (ArrayList) ois.readObject();
ois.close();
fis.close();
System.out.println("deserialized = " + deserialized);
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}