Java:通过 HTTP 流式传输 Zipfile 的内容

标签 java http streaming zip

我有相当多的可流式数据(>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/

相关文章:

http - 可以使用 curl 来模拟持久(但空闲)的打开连接

php - https 检测——这两种方法的优缺点

html - 将 SSL/HTTPS 用于动态视频流

java - 在 Java 中连接到 Oracle DB 返回 NullPointerException

android - 当所有异步 Http 请求完成时执行函数

java - 如何在jsp/jSTL中显示HashMap Key

haskell - 如何为流媒体包实现 Pipes-Group 中的 Folds 和 FoldsM?

python - 如何为 IBM Watson 的语音转文本服务 Web 套接字端点找到必要的访问 Web token ?

java - 双击时调整 JavaFX 选项卡的大小

java - ANDROID STUDIO E/RecyclerView 错误 : No adapter attached; skipping layout