我有相当多的可流式数据(>100MB),为了压缩,我想将其打包在一个 zip 文件中托管在 http 服务器上。所以这个压缩文件包含一个文件。
现在 java 客户端是否可以通过 http 流式传输数据,即使它被打包在一个 zip 文件中?
根据维基百科,ZIP 不是按顺序......
http://en.wikipedia.org/wiki/ZIP_(file_format)#Structure
如果这在某种程度上仍然是可能的,那么怎么做呢?
编辑:关于 gzip:正如我所说,我使用自定义 java 客户端(不是网络浏览器)gzip 在 java http 实现中可用吗?
最佳答案
这是客户端可以用来从压缩流中读取的一段代码(有效):
static void processZippedInputStream(InputStream in, String entryNameRegex)
throws IOException
{
ZipInputStream zin = new ZipInputStream(in);
ZipEntry ze;
while ((ze = zin.getNextEntry()) != null)
{
if (ze.getName().matches(entryNameRegex))
{
// treat zin as a normal input stream - ie read() from it till "empty" etc
break;
}
zin.closeEntry();
}
zin.close();
}
与普通 InputStream 的主要区别在于遍历条目。例如,您可能知道您想要第一个条目,因此不需要名称匹配参数等。
关于Java:通过 HTTP 流式传输 Zipfile 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6225488/