我试图将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转换为字节数组?
最佳答案
ZipEntry
不实现Serializable
。但这没关系,因为实际上没有人有理由序列化ZipEntry
的实例。
您几乎可以肯定要使用ZipEntry
所引用项目的字节。 ZipEntry
类包含有关ZipFile
中文件的元数据。要获取该文件的内容,请使用
InputStream ZipFile.getInputStream(ZipEntry)
您可以包装返回的输入流,以对您的应用程序有意义的任何正常方式检索数据,并从那里读取数据。例如,有关转换为字节数组的信息,请参见this question。