是否可以在下载时解压缩 gzip 文件?
Is it possible to uncompress a gzipped file as it is downloading?
我想以编程方式下载一个 gzip 文件并解压缩,但我不想等它完全下载后再解压缩,而是想在下载时解压缩,即即时解压缩。这甚至可能吗,或者 gzip 格式禁止即时解压缩。
我当然可以使用 Java 的 GZIPInputStream 库在本地文件系统上逐部分解压缩文件,但在本地文件系统中,我显然拥有完整的 gzip 文件。但是,如果我事先没有完整的 gzip 文件,例如从互联网或云存储下载的情况下,这可能吗?
由于您的 URL 连接是输入流,并且由于您创建了 gzipinputstream w/an 输入流,所以我认为这很简单?
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();
}
我想以编程方式下载一个 gzip 文件并解压缩,但我不想等它完全下载后再解压缩,而是想在下载时解压缩,即即时解压缩。这甚至可能吗,或者 gzip 格式禁止即时解压缩。
我当然可以使用 Java 的 GZIPInputStream 库在本地文件系统上逐部分解压缩文件,但在本地文件系统中,我显然拥有完整的 gzip 文件。但是,如果我事先没有完整的 gzip 文件,例如从互联网或云存储下载的情况下,这可能吗?
由于您的 URL 连接是输入流,并且由于您创建了 gzipinputstream w/an 输入流,所以我认为这很简单?
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();
}