限制Java HttpUrlConnection获取内容长度

前端之家收集整理的这篇文章主要介绍了限制Java HttpUrlConnection获取内容长度前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
对,所以,我开始创建一个进行得很好的 Java下载管理器的项目.我目前看到的唯一问题是当我要求URL的内容长度.当我使用HttpUrlConnection的getContentLength提供的方法时,它返回一个Int.

这是伟大的,如果我只是要下载文件大小不超过2GB的文件.做更多的挖掘,发现java不支持unsigned int值,但即使这样只会给我一个最大为4GB的文件大小.

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

提前致谢.

UPDATE

感谢你回答Elite Gentleman,我尝试了你建议的,但是一直返回一个空值,所以我做的是,而不是

HttpURLConnection conn = (HttpURLConnection) absoluteUrl.openConnection();
conn.connect();
long contentLength = Long.parseLong(conn.getHeaderField("Content-Length"));

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

解决方法

为什么不尝试使用headerField方法获取内容长度?即
HttpURLConnection connection = new HttpURLConnection(...); 
long contentLength = Long.parseLong(connection.getHeaderField("Content-Length"));

它等效于connection.getContentLength,除了返回值的类型为string.这可以给出位长度的准确结果.

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

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

> URLConnection.getContentLengthLong().

这实际上称为新的URLConnection.getHeaderFieldLong()方法,这也是JDK 7及更高版本中引入的.

猜你在找的Java相关文章