我试图将ZipEntry对象序列化为字节数组,我知道这是不可能的。
这就是我正在做的事情:
ZipEntry entryToDocumentum = null;
for (ZipEntry oneEntry : entries) { //entries is a ZipEntry arraylist
if (oneEntry.getName().equals(details.getId()+"_"+details.getCodEntidade()+"_"+details.getNrDocumento()+".pdf")) {
entryToDocumentum = oneEntry;
}
}
byte[] entryBytes = serializeEntry(entryToDocumentum);
serializeEntry方法:
private static byte[] serializeEntry(Object obj) throws IOException {
ByteArrayOutputStream b = new ByteArrayOutputStream();
ObjectOutputStream o = new ObjectOutputStream(b);
o.writeObject(obj); //here is where I get the NotSerializable exception
return b.toByteArray();
}
如果ZipEntry不可序列化,我如何将ZipEntry转换为字节数组?
答案 0 :(得分:2)
Serializable
未实施ZipEntry
。但这没关系,因为没有人真正有理由序列化ZipEntry
的实例。
您几乎肯定想要ZipEntry
引用的项目的字节。 ZipFile
类包含有关InputStream ZipFile.getInputStream(ZipEntry)
中文件的元数据。要获取该文件的内容,请使用
;
您可以包装返回的输入流,以便以适合您的应用程序的正常方式检索数据,并从那里读取数据。例如,请参阅http://sqlperformance.com/2012/07/t-sql-queries/split-strings以转换为字节数组。