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

如果你多次写同一个列表,它只会写一次列表。之后它将使用相同的引用但内容将相同(任何对象都是如此)

如果您reset()在 writeObject() 之间调用,它将每次发送一个新的列表副本。

于 2012-08-02T14:42:29.227 回答