我想按程序下载一个gzip文件并解压它,但是我不想等到它完全下载后再解压,而是想在下载时解压它,也就是说,动态解压。这是可能的,或者gzip格式禁止这种动态解压缩。当然,我可以使用java的gziputstream库在本地文件系统上逐部分解压缩文件,但是在本地文件系统中,我显然拥有完整的gzipped文件。但是,当我事先没有完整的gzip文件时,比如从互联网或云存储下载时,这可能吗?
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(); }
1条答案
按热度按时间3mpgtkmj1#
由于您的url连接是inputstream,并且您创建了gzipinputstream w/一个inputstream,我认为这是相当直接的?