2013-12-22 57 views
1

我想通过urlstream读取未压缩在服务器上的文件,并将其作为压缩文件发送。我的问题是做这件事最有效的方式或最佳做法是什么。例如,是否有可能以流媒体的方式做到这一点,我的意思是没有先将内容保存到本地光盘或内存中?以zip形式发送网址流

+0

ASAIK,我不认为这是个好主意。从URL流完全读取后,您想立即压缩它。你可以做的是从* urlstream *中读取文件并将其保存在磁盘中。一旦完全阅读,您可以将其压缩。 – Keerthivasan

回答

1

例如,是否有可能以流方式进行此操作,我的意思是没有先将内容保存到本地光盘或内存中?

是。使用ZipOutputStream

但是,执行此操作的标准HTTP方式是使用gzip压缩,而不是zip压缩。这样,用户代理可以透明地解压缩另一端的文件。

+0

我将此流作为Web服务附件发送,并为此使用javax.activation.Datahandler。那么你的答案使用gzip仍然适用? – cacert

+0

HTTP可以发送任何gzip,所以是的。 –

1

Http正在使用gzip压缩。使用ZipOutputStreamGZIPOutputStream复杂一点,因为zip文件是可以包含多个文件的容器。

既然你正在寻找有效的方式,不会使用过多内存,很好的解决方案也FlushableGZIPOutputStream是:

扩展GZIPOutputStream的要解决的一对夫妇长期 站在JDK的bug(错误4255743和Bug 4813885),所以GZIP的输出 可以刷新。