加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

限制Java HttpUrlConnection获取内容长度

发布时间:2020-12-14 17:47:01 所属栏目:Java 来源:网络整理
导读:对,所以,我开始创建一个进行得很好的 Java下载管理器的项目.我目前看到的唯一问题是当我要求URL的内容长度.当我使用HttpUrlConnection的getContentLength提供的方法时,它返回一个Int. 这是伟大的,如果我只是要下载文件大小不超过2GB的文件.做更多的挖掘,发现
对,所以,我开始创建一个进行得很好的 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及更高版本中引入的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读