0

我正在尝试向我的应用程序添加序列化和反序列化。我已经添加了序列化,使它成为一个文本文件这个问题涉及 ArrayLists。当我看到这段代码时,我正在浏览这个页面:http ://www.vogella.com/articles/JavaSerialization/article.html:

FileInputStream fis = null;
    ObjectInputStream in = null;
    try {
      fis = new FileInputStream(filename);
      in = new ObjectInputStream(fis);
      p = (Person) in.readObject();
      out.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
    System.out.println(p);
  }

我对这一行感到困惑:

p = (Person) in.readObject();

创建 ArrayList 时如何使这一行成为 ArrayList 并不那么简单:

List<String> List = new ArrayList<String>();

我在这里先向您的帮助表示感谢!

4

2 回答 2

1

我直接从您提供链接的网站获取代码,并针对 ArrayList 对其进行了修改。您提到“如何在创建 ArrayList 时使这一行成为 ArrayList 并不那么简单”,我说创建 ArrayList 就这么简单。

public static void main(String[] args) {
    String filename = "c:\\time.ser";
    ArrayList<String> p = new ArrayList<String>();
    p.add("String1");
    p.add("String2");

    // Save the object to file
    FileOutputStream fos = null;
    ObjectOutputStream out = null;
    try {
        fos = new FileOutputStream(filename);
        out = new ObjectOutputStream(fos);
        out.writeObject(p);

        out.close();
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    // Read the object from file
    // Save the object to file
    FileInputStream fis = null;
    ObjectInputStream in = null;
    try {
        fis = new FileInputStream(filename);
        in = new ObjectInputStream(fis);
        p = (ArrayList<String>) in.readObject();
        out.close();
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    System.out.println(p);
}

打印出 [String1, String2]

于 2013-06-15T19:19:23.433 回答
0

您是否将整个 ArrayList 作为对象写入文件?或者您是否Persons在文件的循环中编写了位于 ArrayList 中的对象?

于 2013-06-15T19:17:11.087 回答