我正在使用 GZIPInputStream 下载 pdf 文件我想在 UI 按钮上显示文件的下载进度。但是,我没有得到文件的实际大小,我得到的是压缩大小,因此我无法显示正确的下载进度。此下载进度超过 100,因为实际文件大小大于文件压缩大小。来自服务器的文件的标头内容: - 遵循我从服务器收到的信息,我使用的是提供压缩文件大小的内容长度。
1.Connection 2.Content-Encoding 3.Content-length 4.Content-Type 5.Keep-Alive 6.Server 7.Date
这是我的代码。
long fileLength = httpResponse.getEntity().getContentLength();//
GZIPInputStream input = new GZIPInputStream(new BufferedInputStream(httpResponse.getEntity().getContent()));
FileOutputStream output = new FileOutputStream(destinationFilePath);
byte data[] = new byte[1024];
long total = 0;
float percentage = 0;
int count;
currentDownloadingPercentage=0;
while ((count = input.read(data)) != -1)
{
total += count;
output.write(data, 0, count);
// publishing the progress....
percentage = (float)total/(float)fileLength;
percentage *= 100;
if((int)percentage > (int)currentDownloadingPercentage)
{
currentDownloadingPercentage = percentage;
Bundle resultData = new Bundle();
resultData.putBoolean(DOWNLOAD_FAILED, false);
resultData.putInt(DOWNLOAD_PROGRESS ,(int)percentage);
receiver.send(processID, resultData);
resultData = null;
}
}