我在我的Java应用程序中下载了一些文件并实现了一个下载监视器对话框。但最近我用gzip压缩了所有的文件,现在下载监视器有点坏了。监视器GZip下载Java中的进度
我将文件打开为GZIPInputStream
,并在每下载一次kB后更新下载状态。如果该文件具有1MB的大小,则进展达到例如4MB这是未压缩的大小。我想监视压缩的下载进度。这可能吗?
编辑:澄清:我正在读取未压缩字节的GZipInputStream中的字节。所以这最终没有给我正确的文件大小。
这里是我的代码:
URL url = new URL(urlString);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.connect();
...
File file = new File("bibles/" + name + ".xml");
if(!file.exists())
file.createNewFile();
out = new FileOutputStream(file);
in = new BufferedInputStream(new GZIPInputStream(con.getInputStream()));
byte[] buffer = new byte[1024];
int count;
while((count = in.read(buffer)) != -1) {
out.write(buffer, 0, count);
downloaded += count;
this.stateChanged();
}
...
private void stateChanged() {
this.setChanged();
this.notifyObservers();
}
感谢您的帮助!
我正在读取由未压缩流的'GZipInputStream'下载的字节。所以这不是真正的下载文件大小。 – dbrettschneider
好吧,现在我明白了。 – SJuan76