6

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

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

4

1 回答 1

4

如果您使用的是 java 1.6,则可以使用java.util.zip.DeflaterInputStream. 据我所知,这正是你想要的。如果你不能使用 1.6,你应该能够DeflaterInputStream使用java.util.zip.Deflater. 从 BLOB 读回数据时,使用 aInflaterInputStream作为过滤器来取回原始数据。

于 2010-02-02T18:33:50.087 回答