【问题标题】:ZipEntry to byte arrayZipEntry 到字节数组
【发布时间】:2016-08-09 15:50:38
【问题描述】:

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

【问题讨论】:

    标签: java arrays serialization


    【解决方案1】:

    ZipEntry 没有实现Serializable。但这没关系,因为实际上没有人有理由序列化 ZipEntry 的实例。

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

    InputStream ZipFile.getInputStream(ZipEntry)
    

    您可以包装返回的输入流,以对您的应用程序有意义的任何常规方式检索数据并从那里读取数据。例如,请参阅this question 转换为字节数组。

    【讨论】:

      猜你喜欢
      • 2020-11-18
      • 2011-10-04
      • 1970-01-01
      • 2016-08-21
      • 1970-01-01
      • 2015-03-19
      • 1970-01-01
      • 2021-01-03
      • 1970-01-01
      相关资源
      最近更新 更多