java大文件下载不完整,无错误
我们正在下载一个非常大的文件(~70G),但有一次代码没有抛出异常就完成了,但下载的文件不完整,略低于50G
代码是:
public void download(String url, String filename) throws Exception {
URL dumpUrl = new URL(url);
try (InputStream input = dumpUrl.openStream()) {
Files.copy(input, Paths.get(filename));
}
}
url
是一个预先指定的谷歌云存储URL
这只是库没有检测到连接重置问题吗?还是别的什么
有更好的图书馆吗。或者我需要先做一个头部通话,然后根据内容长度匹配下载的大小
不要在意它不起作用,这种情况会发生,我们有重试逻辑。我的问题是代码认为它确实有效
更新:所以它似乎在开始下载后2小时就失败了。这让我怀疑可能是网络操作/防火墙问题。我不确定在哪一方面,我会先和我的行动团队争论。有人知道谷歌时代的时间限制吗
忽略此更新-现在有更多实例,没有设置时间。20分钟到2小时之间
# 1 楼答案
从未解决过核心问题。但是可以通过比较下载到
Content-Length
头的字节来解决问题。在循环中工作,使用Range
头(类似于curl -C -
)恢复不完整的下载