在下载时解压缩一个gzipped文件是可能的吗?

5
我想以编程方式下载一个gzipped文件并解压缩它,但是我想在完全下载之前就开始解压缩它,也就是说,在下载时进行实时解压缩。这是否可能,或者gzipped格式禁止这种实时解压缩。
当然,我可以使用Java的GZIPInputStream库在本地文件系统上逐部分解压缩文件,但在本地文件系统上,我显然拥有完整的gzipped文件。但在从互联网或云存储中下载的情况下,是否可以在没有完整的gzipped文件的情况下进行解压缩?

2
没问题,gzip 压缩格式可以流式传输,大多数其他压缩格式也是可以的。 - that other guy
1个回答

1
由于您的URL连接是一个输入流,而且您使用输入流创建了gzipinputstream,我认为这相当简单明了?
public static void main(String[] args) throws Exception {
    URL someUrl = new URL("http://your.site.com/yourfile.gz");
    HttpURLConnection someConnection = (HttpUrlConnection) someUrl.openConnection();
    GZIPInputStream someStream = new GZIPInputStream(someConnection.getInputStream());
    FileOutputStream someOutputStream = new FileOutputStream("output.tar");
    byte[] results = new byte[1024];
    int count = someStream.read(results);
    while (count != -1) {
        byte[] result = Arrays.copyOf(results, count);
        someOutputStream.write(result);
        count = someStream.read(results);
    }
    someOutputStream.flush();
    someOutputStream.close();
    someStream.close();
}

太棒了。我会尝试这个解决方案。 - pythonic
@pythonic解决了你的问题吗?我遇到了同样的问题,我想下载包含.tsv文件的gzip文件,我该怎么做呢?谢谢。 - mi_mo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接