对,所以,我开始创建一个进行得很好的
Java下载管理器的项目.我目前看到的唯一问题是当我要求URL的内容长度.当我使用HttpUrlConnection的getContentLength提供的方法时,它返回一个Int.
这是伟大的,如果我只是要下载文件大小不超过2GB的文件.做更多的挖掘,发现java不支持unsigned int值,但即使这样只会给我一个最大为4GB的文件大小.
提前致谢.
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及更高版本中引入的.