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

332nm8kg  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(374)

我想按程序下载一个gzip文件并解压它,但是我不想等到它完全下载后再解压,而是想在下载时解压它,也就是说,动态解压。这是可能的,或者gzip格式禁止这种动态解压缩。
当然,我可以使用java的gziputstream库在本地文件系统上逐部分解压缩文件,但是在本地文件系统中,我显然拥有完整的gzipped文件。但是,当我事先没有完整的gzip文件时,比如从互联网或云存储下载时,这可能吗?

3mpgtkmj

3mpgtkmj1#

由于您的url连接是inputstream,并且您创建了gzipinputstream w/一个inputstream,我认为这是相当直接的?

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();
}

相关问题