我需要使用java.util.zip.ZipOutputStream
压缩文件存档来响应。
未压缩的数据有几百兆字节,所以我想尽可能少地存储它。它来自 SQL 结果的序列化。
我看到使用 anOutputStream
返回分块结果的示例Enumerator.outputStream
:
但是当我阅读文档时,这些似乎是不明智的(强调我的)
使用 OutputStream 创建一个字节枚举器。
并不是说 write 调用不会阻塞,因此如果被馈送到的迭代器消耗输入的速度很慢,则 OutputStream 不会推回。这意味着它不应该与大型流一起使用,因为存在内存不足的风险。
显然,我不能使用它。或者至少不是没有修改。
如何使用OutputStream
(在本例中为 gzip 压缩存档)创建响应,同时确保只有部分响应存储在内存中?
InputStream
我认识到s/ OutputStream
s 和 Play 的Enumerator
/范式之间的区别Iteratee
,所以我希望会有一种特定的方式来生成我的源数据(SQL 结果的序列化),这样它就不会超过下载速度。我不知道那是什么。