ZipEntry到字节数组

时间:2016-08-09 15:50:39

标签: java arrays serialization

我试图将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转换为字节数组?

1 个答案:

答案 0 :(得分:2)

Serializable未实施ZipEntry。但这没关系,因为没有人真正有理由序列化ZipEntry的实例。

您几乎肯定想要ZipEntry引用的项目的字节。 ZipFile类包含有关InputStream ZipFile.getInputStream(ZipEntry) 中文件的元数据。要获取该文件的内容,请使用

;

您可以包装返回的输入流,以便以适合您的应用程序的正常方式检索数据,并从那里读取数据。例如,请参阅http://sqlperformance.com/2012/07/t-sql-queries/split-strings以转换为字节数组。