How to Download. Zip File from Url Using Java [Duplicate]

How to Download. Zip File from Url Using Java [Duplicate]

guys! I have a problem! I'm trying to download a .zip (size is 150 mb) file from Internet using this code:

public void downloadBuild(String srcURL, String destPath, int bufferSize, JTextArea debugConsole) throws FileNotFoundException, IOException {
    debugConsole.append(String.format("**********Start process downloading file. URL: %s**********\n", srcURL));
    try {
        URL url = new URL(srcURL);
        HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
        httpConn.setRequestMethod("POST");
        httpConn.connect();
        in = httpConn.getInputStream();
        out = new FileOutputStream(destPath);
        byte buffer[] = new byte[bufferSize];
        int c = 0;
        while ((c = in.read(buffer)) > 0) {
            out.write(buffer, 0, c);
        }
        out.flush();
        debugConsole.append(String.format("**********File. has been dowloaded: Save path is: %s********** \n", destPath));
    } catch (IOException e) {
        debugConsole.append(String.format("**********Error! File was not downloaded. Detail: %s********** \n", e.toString()));
    } finally {
        try {
            if (out != null) {
                out.close();
            }
            if (in != null) {
                in.close();
            }
        } catch (IOException ex) {
        }
    }
}

but the file is not completely downloaded. (only 4000 bytes). What am I doing wrong?

3

2 Answers

FileOutputStream("example.zip").getChannel().transferFrom(Channels.newChannel(new URL("").openStream()), 0, Long.MAX_VALUE);

Simple one-liner. For more info, read here

3

you can use the following code to download and extract zip file from given uri path.

        URL url = new URL(uriPath);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("GET");
        InputStream in = connection.getInputStream();
        ZipInputStream zipIn = new ZipInputStream(in);
        ZipEntry entry = zipIn.getNextEntry();

        while(entry != null) {

            System.out.println(entry.getName());
            if (!entry.isDirectory()) {
                // if the entry is a file, extracts it
                System.out.println("===File===");

            } else {
                System.out.println("===Directory===");
            }
            zipIn.closeEntry();
            entry = zipIn.getNextEntry();

        }
Alexander Ross
Author

Alexander Ross

Alexander Ross has covered the video game industry for a decade, writing deep dives on game design, esports tournaments, VR developments, and gaming culture.