Home:ALL Converter>Download File from Direct Download URL

Download File from Direct Download URL

Ask Time:2022-04-20T19:15:01         Author:Santiago Luca

Json Formatter

I'm trying to download the following the following file, with this link that redirects you to a direct download: http://www.lavozdegalicia.es/sitemap_sections.xml.gz

I've done my own research, but all the results I see are related to HTTP URL redirections [3xx] and not to direct download redirections (maybe I'm using the wrong terms to do the research).

I've tried the following pieces of code (cite: https://programmerclick.com/article/7719159084/ ):

// Using Java IO
private static void downloadFileFromUrlWithJavaIO(String fileName, String fileUrl) {
        BufferedInputStream inputStream = null;
        FileOutputStream outputStream = null;
        try {
            URL url = new URL(fileUrl);
            inputStream = new BufferedInputStream(url.openStream());
            outputStream = new FileOutputStream(fileName);

            byte data[] = new byte[1024];
            int count;
            while ((count = inputStream.read(data, 0, 1024)) != -1) {
                outputStream.write(data, 0, count);
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (inputStream != null) {
                    inputStream.close();
                }
                if (outputStream != null) {
                    outputStream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    } 
// Using Apache common IO
private static void downloadFileFromUrlWithCommonsIO(String fileName, String fileUrl) {
        try {
            FileUtils.copyURLToFile(new URL(fileUrl), new File(fileName));
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
    // Using NIO
    private static void downloadFileFromURLUsingNIO(String fileName, String fileUrl) {
        try {
            URL url = new URL(fileUrl);
            ReadableByteChannel readableByteChannel = Channels.newChannel(url.openStream());
            FileOutputStream fileOutputStream = new FileOutputStream(fileName);
            fileOutputStream.getChannel().transferFrom(readableByteChannel, 0, Long.MAX_VALUE);
            fileOutputStream.close();
            readableByteChannel.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

But the result I get with any of the three options is an empty file, my thoughts are that the problem is related to the file being a .xml.gz because when I debug it the inputStream doesn't seem to have any content.

I ran out of options, anyone has an idea of how to handle this case, or what would be the correct terms I should use to research about this specific case?

Author:Santiago Luca,eproduced under the CC 4.0 BY-SA copyright license with a link to the original source and this disclaimer.
Link to original article:https://stackoverflow.com/questions/71938669/download-file-from-direct-download-url
yy