Pobieram niektóre pliki w mojej aplikacji java i zaimplementowałem okno dialogowe monitora pobierania. Ale ostatnio skompresowałem wszystkie pliki za pomocą gzip, a teraz monitor pobierania jest trochę uszkodzony.Monitor GZip Pobierz Postęp w Javie
Otwieram plik jako GZIPInputStream
i aktualizuję status pobierania po każdym pobraniu kB. Jeśli plik ma rozmiar 1 MB, postępy idą do np. 4 MB, czyli rozmiar nieskompresowany. Chcę monitorować skompresowany postęp pobierania. czy to możliwe?
EDYCJA: Aby wyjaśnić: Czytam bajty z GZipInputStream, które są nieskompresowane bajty. To nie daje mi odpowiedniego rozmiaru na końcu.
Oto mój kod:
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();
}
Dzięki za wszelką pomoc!
Czytam bajty pobrane przez 'GZipInputStream', który jest nieskompresowanym strumieniem. To nie jest prawdziwy plik, który jest pobierany. – dbrettschneider
Ok, teraz to widzę. – SJuan76