gpt4 book ai didi

java - 使用 ObjectOutputStream 将对象从列表写入文件

转载 作者:行者123 更新时间:2023-12-01 16:52:57 26 4
gpt4 key购买 nike

我正在尝试使用 ObjectOutputStream 将列表(对象)的内容写入磁盘。

这是相关代码:

//Input Filetype is .xlsx with an embedded File (also .xlsx), Output Filetype should be .xlsx (Type of embedded File)
//This code should save the embedded File to D:\\...

List<HSSFObjectData> extrList = new ArrayList<HSSFObjectData>();

HSSFWorkbook embeddedWorkbook = new HSSFWorkbook(pPart.getInputStream());
extrList = embeddedWorkbook.getAllEmbeddedObjects();
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("D:\\scan_temp\\emb.xlsx"));

oos.writeObject(extrList);
oos.flush();
oos.close();

这段代码创建了一个名为 emb.xlsx 的文件,但内容不是我所期望的。如果我尝试使用记事本打开,则类似于:

¬í sr java.util.ArrayListxÒ™Ça I sizexp    w    x

我在这里做错了什么?谢谢你的帮助。

最佳答案

What am I doing wrong here?

你做错了几件事:

  1. 您误用了序列化对象文件的 .xlsx 扩展名。该扩展适用于 XML 格式的 Excel 电子表格。您应该使用 .bin.data.ser 等。
  2. 当您应该使用 POI 内置的 I/O 工具时,您却在使用序列化。
  3. 您正在尝试使用文本编辑器读取二进制文件。
  4. 您在 close() 之前重复调用了 flush()

关于java - 使用 ObjectOutputStream 将对象从列表写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36422720/

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