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

リンクを提供した Web サイトからコードを直接取得し、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);
}

[文字列1、文字列2]を出力します

于 2013-06-15T19:19:23.433 に答える
0

ArrayList 全体をオブジェクトとしてファイルに書きましたか? Personsまたは、ファイル内のループで ArrayList にあったオブジェクトを書きましたか?

于 2013-06-15T19:17:11.087 に答える