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

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

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

3mpgtkmj

3mpgtkmj1#

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

  1. public static void main(String[] args) throws Exception {
  2. URL someUrl = new URL("http://your.site.com/yourfile.gz");
  3. HttpURLConnection someConnection = (HttpUrlConnection) someUrl.openConnection();
  4. GZIPInputStream someStream = new GZIPInputStream(someConnection.getInputStream());
  5. FileOutputStream someOutputStream = new FileOutputStream("output.tar");
  6. byte[] results = new byte[1024];
  7. int count = someStream.read(results);
  8. while (count != -1) {
  9. byte[] result = Arrays.copyOf(results, count);
  10. someOutputStream.write(result);
  11. count = someStream.read(results);
  12. }
  13. someOutputStream.flush();
  14. someOutputStream.close();
  15. someStream.close();
  16. }
展开查看全部

相关问题