是否可以在下载时解压缩gzip压缩文件?

时间:2017-07-14 17:58:35

标签: java cloud gzip gzipstream

我想以编程方式下载一个gzip压缩文件并将其解压缩,但是在解压缩之前没有等待它完全下载,我想在下载时解压缩它,即在运行时解压缩它。这甚至是可能的,或者gzipped格式禁止在运行中进行这种不压缩。

我当然能够使用Java的GZIPInputStream库在本地文件系统上按部分解压缩文件,但在本地文件系统中,我显然拥有完整的gzip压缩文件。但是,如果我事先没有完整的gzip压缩文件,这是可能的,例如从互联网或云端存储下载吗?

1 个答案:

答案 0 :(得分:1)

由于您的网址连接是输入流,并且由于您使用输入流创建了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();
}