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是一个预签名的 Google Cloud Storage URL。


这只是库没有检测到连接重置问题吗?或者是其他东西?


有没有更好的库我可以使用。或者我是否需要先进行 HEAD 调用,然后将下载的大小与内容长度进行匹配。


不要在意它不起作用,这种情况发生了,我们有重试逻辑。我的问题是认为它确实有效的代码。


更新:所以它似乎在开始下载后正好 2 小时就失败了。这让我怀疑它可能是网络/防火墙问题。不确定在哪一端,我会为我的运营团队找麻烦。有人知道谷歌结束的时间限制吗?


忽略此更新 - 现在有更多实例,没有固定时间。20分钟到2小时之间的任何地方。


吃鸡游戏
浏览 706回答 1
1回答

RISEBY

从未解决核心问题。但是能够通过比较下载到Content-Length标头的字节来解决。在一个循环中工作,使用Range标头恢复不完整的下载(类似于curl -C -)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java