Java中的大文件下载不完整,没有错误

时间:2019-03-01 02:53:32

标签: java download google-cloud-storage

我们正在下载一个非常大的文件(〜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小时失败了。这使我怀疑这可能是netops /防火墙问题。不知道在哪端,我将使我的行动团队陷入困境。有人知道Google的时限吗?

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

1 个答案:

答案 0 :(得分:0)

从未解决核心问题。但是能够通过比较下载到var(--primaryColor)头的字节来解决。循环工作,可使用Content-Length标头(类似于Range)恢复不完整的下载。