我正在尝试使用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
我在这里做错了什么?谢谢你的帮助。
答案 0 :(得分:4)
我在这里做错了什么?
你做错了几件事:
.xlsx
扩展名。该扩展名适用于XML格式的Excel电子表格。您应该使用.bin
,.data
,.ser
等flush()
之前对close()
进行了冗余调用。答案 1 :(得分:1)
如果其他人正在尝试与我相同的事情,请使用以下代码(有效!):
.write()
不要尝试将嵌入对象放入列表中。只需使用public static
double
distanceToSegment( final R3 v, final R3 a, final R3 b )
就可以了。 : - )