Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.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连接URL并下载zip,但提取zip时未正确下载_Java_Zip_Inputstream_Httpurlconnection_Outputstream - Fatal编程技术网

Java连接URL并下载zip,但提取zip时未正确下载

Java连接URL并下载zip,但提取zip时未正确下载,java,zip,inputstream,httpurlconnection,outputstream,Java,Zip,Inputstream,Httpurlconnection,Outputstream,我向URL发送一个请求XML,并接收一个到给定路径的zip文件。 有时,当这个zip文件的带宽很低时,我会遇到麻烦,很可能是120MB的大小没有被正确下载。以及提取zip文件时出错。也可以从代码中进行提取。当我以高带宽下载此文件时,下载不会出现问题 我正在寻找一个解决方案,而不使带宽高,从程序级有任何方法下载这个zip文件,可能是部分或类似的?或者你们所有人都拥有的任何其他解决方案都是高度赞赏的 下载: url = new URL(_URL); sc = (Htt

我向URL发送一个请求XML,并接收一个到给定路径的zip文件。 有时,当这个zip文件的带宽很低时,我会遇到麻烦,很可能是120MB的大小没有被正确下载。以及提取zip文件时出错。也可以从代码中进行提取。当我以高带宽下载此文件时,下载不会出现问题

我正在寻找一个解决方案,而不使带宽高,从程序级有任何方法下载这个zip文件,可能是部分或类似的?或者你们所有人都拥有的任何其他解决方案都是高度赞赏的

下载:

        url = new URL(_URL);
        sc = (HttpURLConnection) url.openConnection();
        sc.setDoInput(true);
        sc.setDoOutput(true);
        sc.setRequestMethod("POST");
        sc.connect();

        OutputStream mOstr = sc.getOutputStream();
        mOstr.write(request.getBytes());

        InputStream in = sc.getInputStream();

        FileOutputStream out = new FileOutputStream(path);

        int count;
        byte[] buffer = new byte[86384];
        while ((count = in.read(buffer,0,buffer.length)) > 0)
            out.write(buffer, 0, count);

        out.close();
提取:

try {

        ZipFile zipFile = new ZipFile(path+zFile);

        Enumeration<?> enu = zipFile.entries();

        while (enu.hasMoreElements()) {

            ZipEntry zipEntry = (ZipEntry) enu.nextElement();

            String name = path+"/data_FILES/"+zipEntry.getName();
            long size = zipEntry.getSize();
            long compressedSize = zipEntry.getCompressedSize();
            System.out.printf("name: %-20s | size: %6d | compressed size: %6d\n", name, size, compressedSize);

            File file = new File(name);

            if (name.endsWith("/")) {
                file.mkdirs();
                continue;
            }

            File parent = file.getParentFile();
            if (parent != null) {
                parent.mkdirs();
            }

            InputStream is = zipFile.getInputStream(zipEntry);

            FileOutputStream fos = new FileOutputStream(file);

            byte[] bytes = new byte[86384];
            int length;

            while ((length = is.read(bytes)) >= 0) {
                fos.write(bytes, 0, length);
            }
            is.close();
            fos.close();

        }
        zipFile.close();

    } catch (Exception e) {
        log("Error in extracting zip file ");
        e.printStackTrace();
    }

这是一项学术任务吗?为什么要用这么多低级的东西,你试过Apache虚拟文件系统吗?解压时会出现什么错误?EOF?这是我提取时得到的。存档:/var/log/rezg/app/07-05-2013/data[/var/log/rezg/app/07-05-2013/data]未找到中央目录签名的结尾。此文件不是zipfile,或者它构成多部分存档的一个磁盘。在后一种情况下,中心目录和zipfile注释将在该存档的最后一个磁盘上找到。ZIPFION:找不到ZVFILE目录中的一个/VAL/RZG/AP0/05-05201/DATA或/VAR/Log/RZG/APP/0705-2013/DATA.zip,不能找到/VAL/Log/RZG/APP/0705-2013/DATA.zip,句号。下载时有错误日志吗?不,我不会因为下载而出错,只是在中间停止。下载后,程序将移动以提取zip文件,然后仅发生错误。