无法下载zip文件

时间:2018-01-24 18:18:39

标签: java zipfile

我一直在尝试使这段代码工作,并且现在浏览了stackoverflow一段时间但却无法找到答案。希望你能帮忙。

尝试从互联网下载zip文件,但会产生1 kb的zip文件。

更新:我尝试过Long.MAX_VALUE,但结果是一样的。我真的不确定是什么问题。普通文本文件只能用于文件,但不能用于zip文件。请帮助。

private static void testDownload() {

    try {
        URL website = new URL("http://www.sec.gov/Archives/edgar/data/1027884/000102788418000013/0001027884-18-000013-xbrl.zip");
        ReadableByteChannel rbc = Channels.newChannel(website.openStream());
        FileOutputStream fos = new FileOutputStream("C:\\0001027884-18-000013-xbrl.zip");
        fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
    }catch(Exception e){
        System.out.println("EXCEPTION: " + e.getMessage());
        System.exit(2);
    }   
}

2 个答案:

答案 0 :(得分:0)

使用transferFrom()可能比从源通道读取并写入此通道的简单循环更有效。许多操作系统可以直接从源通道将字节传输到文件系统缓存中,而无需实际复制它们。

注意:transferFrom中的第三个参数是要传输的最大字节数。 Integer.MAX_VALUE最多将传输2 ^ 31个字节,Long.MAX_VALUE最多允许2 ^ 63个字节(大于现有的任何文件)。

因此,在您指定1024时,我认为这就是为什么您的zip文件大小为1 KB。请尝试指定Long.MAX_VALUE。

希望这能解决您的问题。

答案 1 :(得分:0)

好的家伙们,终于根据zipfiles中的输出找到了问题。

只需将HTTP转换为HTTPS即可解决问题