【发布时间】:2013-01-19 11:17:49
【问题描述】:
我想用 java 下载一个 HTTP 查询,但是我下载的文件在下载时长度不确定。
我觉得这会很标准,所以我搜索并找到了它的代码sn-p:http://snipplr.com/view/33805/
但是 contentLength 变量有问题。由于长度未知,我得到-1。这会产生错误。当我省略对 contentLength 的整个检查时,这意味着我总是必须使用最大缓冲区。
但问题是文件还没有准备好。因此,flush 仅被部分填充,部分文件丢失。
如果您尝试使用该 sn-p 下载像 http://overpass-api.de/api/interpreter?data=area%5Bname%3D%22Hoogstade%22%5D%3B%0A%28%0A++node%28area%29%3B%0A++%3C%3B%0A%29+%3B%0Aout+meta+qt%3B 这样的链接,您会注意到错误,并且当您总是下载最大缓冲区以忽略错误时,您最终会得到一个损坏的 XML 文件。
有没有办法只下载文件的就绪部分?我希望这可以下载大文件(最多几 GB)。
【问题讨论】: