2014-12-03 79 views
0

我试图在dat文件里面存储一个类型的数组列表,这样数据在每次关闭程序时都不会丢失。我之前从未做过任何有关序列化的内容,从查看本网站上的其他问题,我认为这正是我想要的。任何帮助或见解都广受赞赏!我可以序列化一个数组列表,以便我可以将其存储在.dat文件中吗?

+1

你放在'ArrayList'中的所有对象也必须是可序列化的。 – markspace 2014-12-03 19:59:13

+0

您是否阅读过文档? – SLaks 2014-12-03 19:59:20

回答

0

ArrayList implements 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(); 
     } 

    } 
}