gpt4 book ai didi

java - 使用 ObjectInputStream 从文件中读取许多 ArrayList 对象?

转载 作者:行者123 更新时间:2023-12-01 15:14:48 25 4
gpt4 key购买 nike

我将 ArrayList 写入文件中。我用 FileInputStream 读取它。但总是只有“第一个”ArrayList 通过读取出现。我尝试使用 readInt()/wirteInt() 和循环,但总是通过调用 readInt() --> EOF 抛出异常我想将此文件中的所有 ArrayList 读入 ArrayList。我的应用程序需要持久化,因此我序列化了 ArrayList。

写入文件:



<前>尝试{
FileOutputStream fos = new FileOutputStream(_cache, true);
ObjectOutputStream os = new ObjectOutputStream(fos);
//os.writeInt(newValueList.size());//先保存大小
os.writeObject(newValueList);

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

} catch (IOException e) {
//TODO 自动生成的 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();
}

最佳答案

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

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

关于java - 使用 ObjectInputStream 从文件中读取许多 ArrayList 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11779678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com