HttpURLConnection conn = (HttpURLConnection)url.openConnection();
long contentlength = conn.getContentLength();
發現在下載文件較小的時候能夠獲取到正確的contentlength值,一旦下載文件超過2G大小contentlength的值就是-1,在網上找相關解答,都是說要取消gzip文件壓縮方式,用conn.setRequestProperty("Accept-Encoding", "identity");修改,但是本人試過後還是不能得到大文件的contentlength值,後來無意間看到getContentLength方法的描述,發現該方法返回的是int類型的值,這才恍然大悟,超過2G的值是不能用int表示的,所以只會返回-1
可用的解決辦法如下:
private long getContentSize(HttpURLConnection conn){
long contentSize = 0;
for(int i = 0; ; i++){
String mine = conn.getHeaderFieldKey(i);
if(mine == null)
{
break;
}
else if(mine.equals("Content-Length"))
{
contentSize = Long.parseLong(conn.getHeaderField(i));
break;
}
}
return contentSize;
}