Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法下载zip文件_Java_Zipfile - Fatal编程技术网

Java 无法下载zip文件

Java 无法下载zip文件,java,zipfile,Java,Zipfile,我一直在努力使这段代码工作,也浏览了stackoverflow一段时间,但没有找到答案。希望你能帮忙 尝试从internet下载zip文件,但结果是zip文件为1KB 更新:我尝试了Long.MAX_值,但结果相同。我真的不确定出了什么问题。普通文本文件只适用于文件,而不适用于ZipFile。请帮忙 private static void testDownload() { try { URL website = new URL("http://www.sec.gov/A

我一直在努力使这段代码工作,也浏览了stackoverflow一段时间,但没有找到答案。希望你能帮忙

尝试从internet下载zip文件,但结果是zip文件为1KB

更新:我尝试了Long.MAX_值,但结果相同。我真的不确定出了什么问题。普通文本文件只适用于文件,而不适用于ZipFile。请帮忙

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);
    }   
}

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

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

因此,在这里,当您指定1024时,我认为这就是zip文件大小为1KB的原因。请尝试指定Long.MAX_值


希望这能解决你的问题

好了,伙计们,终于根据ZipFile中的输出找到了问题


只需将HTTP转换为HTTPS,这就解决了问题

1024字节,准确地说,这正是您告诉程序要做的;正在做什么?亲爱的Sahil的可能副本,谢谢。不过,我之前尝试过Long.MAX_值,但结果是一样的。1kb文件zip文件伙计们,我试过几个代码。仍然有相同的结果。它总是会生成一个1KB的zip文件,其中包含以下内容:301永久移动永久移动文档已移动。好的,所以浏览器会自动将请求转换为https,这就是我们能够从浏览器下载它的原因。