我试图将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

09-27 06:58