繁体   English   中英

将字节数组写入ZipArchiveOutputStream

[英]Write byte array to ZipArchiveOutputStream

我需要创建一个zip文件,并受以下条件的限制:

  • 这些条目以byte [](或ByteArrayOutputStream)的形式出现,而不是以File的形式出现。
  • 条目的文件名可以是非ascii / UTF-8。
  • JDK 1.6或更早版本

由于java.util.zip仅支持JDK 1.7及更高版本中的UTF-8文件名,因此使用commons-compress ZipArchiveOutputStream似乎更好。 但是如何基于字节数组或ByteArrayOutputStream而不是文件创建ZipEntryArchive?

谢谢!

以下方法将一个byte []作为输入,生成一个zip并将其内容作为另一个byte []返回。 所有操作都在内存中完成。 磁盘上没有任何IO操作。 我剥离了异常处理以获取更好的概述。

    byte[] zip(byte[] data, String filename) {
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        ZipArchiveOutputStream zos = new ZipArchiveOutputStream(bos);

        ZipArchiveEntry entry = new ZipArchiveEntry(filename);
        entry.setSize(data.length);
        zos.putArchiveEntry(entry);
        zos.write(data);
        zos.closeArchiveEntry();

        zos.close();
        bos.close();

        return bos.toByteArray();       
   }

这样可以解决您的问题吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM