我可以序列化一个arraylist,以便将其存储在.dat文件中吗?

时间:2014-12-03 19:56:53

标签: java serialization

我试图在一个dat文件中存储我制作的类型的arraylist,这样每次关闭程序时数据都不会丢失。我之前从未做过序列化的任何事情,从查看本网站上的其他问题我认为这就是我想要的。非常感谢任何帮助或见解!

1 个答案:

答案 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();
        }

    }
}