Java HttpUrlConnection获取内容长度的限制

Bre*_*all 10 java download httpurlconnection

对,我开始创建一个Java下载管理器的项目很顺利.我目前看到的唯一问题是我请求URL的内容长度.当我使用HttpUrlConnection的getContentLength提供的方法时,它返回一个Int.

如果我只是下载文件大小小于2GB的文件,那就太棒了.做一些挖掘并发现java不支持unsigned int值,但即便如此,只能给我一个4GB的文件大小.

任何人都可以帮助我获得大于2GB的文件的内容大小的正确方向.

提前致谢.

UPDATE

谢谢你回答精英绅士,我尝试了你的建议,但仍然返回一个空值,所以我做的是

HttpURLConnection conn = (HttpURLConnection) absoluteUrl.openConnection();
conn.connect();
long contentLength = Long.parseLong(conn.getHeaderField("Content-Length"));
Run Code Online (Sandbox Code Playgroud)

出于某种原因,只使用conn.getRequestProperty总是为我返回一个null

Buh*_*ndi 18

为什么不尝试使用headerField方法获取内容长度?即

HttpURLConnection connection = new HttpURLConnection(...); 
long contentLength = Long.parseLong(connection.getHeaderField("Content-Length"));
Run Code Online (Sandbox Code Playgroud)

connection.getContentLength除了返回值是string类型之外,它是等价的.这可以给出比特长度的准确结果.

更新:我更新它使用HeaderField而不是requestProperty ...感谢问题的作者.


感谢来自Ru的@FlasH,您可以使用JDK 7及更高版本获得相同的结果.

这实际上调用了新URLConnection.getHeaderFieldLong()方法,该方法也已在JDK 7及更高版本中引入.