gpt4 book ai didi

java - 如何从保存 List<> 对象的文件中反序列化?

转载 作者:行者123 更新时间:2023-12-02 09:32:31 25 4
gpt4 key购买 nike

编辑:你们中有人曾经反序列化过整个列表吗?因为每当我使用一个非 List 的简单对象尝试此代码时,它就会起作用。似乎反序列化和转换到列表上一般不起作用。

如何从文件中反序列化列表?这是我为此所做的一些示例代码(我知道这不起作用,我只是编写它来使我的想法清晰):

public List<FileRead> loadList(File file) {
List<FileRead> feeds = new ArrayList<FileRead>();

try (ObjectInputStream ois =
new ObjectInputStream(
new FileInputStream(file))){
feeds = (List<FileRead>) ois.readObject();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}

return feeds;
}

请怜悯我,我真的是一个初学者,我的类(class)需要这个。编辑:这是序列化的代码(将其更改为序列化整个列表,但不起作用):

public void saveList(List<FileRead> fRead, File saveFile) {     
try (ObjectOutputStream oos =
new ObjectOutputStream(new FileOutputStream(saveFile))){
oos.writeObject(fRead);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

最佳答案

How do I deserialize a List from a file? I serialized the items of a List to a file via a for-each-loop, but I don't know how to do it the other way around.

您可以通过执行对称操作来做到这一点。

要么你这样做:

  • 列表对象作为一个整体进行序列化,然后您可以使用上面的代码来读回整个列表
  • 如果您想保留当前的序列化代码,那么您需要:继续读取对象,直到获得 EOF,或更“稳健”:序列化列表中的元素数量,然后序列化该数量的元素。然后你的读取代码可以先读取数字,然后知道要执行多少次后续读取。

但如上所述:简单的解决方案是:序列化和反序列化整个列表。

关于java - 如何从保存 List<> 对象的文件中反序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57835946/

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