gpt4 book ai didi

java - Java HttpUrlConnection 获取内容长度的限制

转载 作者:搜寻专家 更新时间:2023-10-30 21:47:17 24 4
gpt4 key购买 nike

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

如果我只下载文件大小小于 2GB 的文件,这太棒了。做更多的挖掘,发现 java 不支持 unsigned int 值,但即使这样也只会给我最大 4GB 的文件大小。

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

提前致谢。

更新

感谢您的回答 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,只是返回值是字符串类型。这可以给出准确的位长结果。

更新:我将其更新为使用 HeaderField 而不是 requestProperty...感谢问题的作者。


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

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

关于java - Java HttpUrlConnection 获取内容长度的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2294868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com