0

ArrayLists をファイルに書き込みます。FileInputStream で読み込みます。しかし、読み取りによって常に「最初の」ArrayList だけが表示されます。readInt() / wirteInt() とループで試してみましたが、readInt() を呼び出すことで常に例外がスローされました --> EOF このファイルからすべての ArrayList を ArrayList に読み込みたいです。私のアプリケーションは永続的である必要があるため、ArrayLists をシリアル化しました。

ファイルに書き込む:

        try {         
        FileOutputStream fos = new FileOutputStream(_cache, true);
        ObjectOutputStream os = new ObjectOutputStream(fos);
        // os.writeInt(newValueList.size()); // Save size first
        os.writeObject(newValueList); 

        os.flush();
        os.close();

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

ファイルから読み取る:

 List cachedValueList = new ArrayList<String>();
    ObjectInputStream o = new ObjectInputStream(new FileInputStream("caching.io"));
  //  int count = o.readInt(); // Get the number of regions

    try {

            cachedValueList.add(o.readObject());

    } catch (EOFException e) {
        o.close();
        e.printStackTrace();
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
4

1 に答える 1

1

同じリストを何度も書き込んでいる場合、リストは 1 回しか書き込まれません。その後、同じ参照を使用しますが、内容は同じになります (これはどのオブジェクトにも当てはまります)。

writeObject() の間に呼び出すとreset()、毎回リストの新しいコピーが送信されます。

于 2012-08-02T14:42:29.227 に答える