代码之家  ›  专栏  ›  技术社区  ›  Brian Deterling

如何有效地将未压缩的InputStream转换为gzip的InputStream?

  •  6
  • Brian Deterling  · 技术社区  · 15 年前

    用户将一个大文件上传到我的网站,我想gzip文件并将其存储在blob中。所以我有一个未压缩的InputStream,而blob需要一个InputStream。我知道如何使用gzipoutstream将InputStream压缩为Outputstream,但是如何从gzip的Outputstream返回blob所需的InputStream。

    我能找到的唯一方法是使用ByteArrayOutputStream,然后使用toByteArray创建一个新的InputStream。但这意味着我在内存中有一份完整的文件副本。如果JDBC驱动程序实现也将流转换为字节[],那么我在内存中就有两个副本,这也不会让我感到惊讶。

    1 回复  |  直到 15 年前
        1
  •  4
  •   Geoff Reedy    15 年前

    如果您使用的是Java1.6,那么可以使用 java.util.zip.DeflaterInputStream DeflaterInputStream 使用 java.util.zip.Deflater . 从BLOB读回数据时,请使用 InflaterInputStream