Java URL Download downloadFile(String fileURL, String saveDir)

Here you can find the source of downloadFile(String fileURL, String saveDir)

Description

Downloads a file from a URL

License

Apache License

Parameter

Parameter Description
fileURL HTTP URL of the file to be downloaded
saveDir path of the directory to save the file

Exception

Parameter Description
IOException an exception

Declaration

public static void downloadFile(String fileURL, String saveDir) throws IOException 

Method Source Code


//package com.java2s;
//License from project: Apache License 

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class Main {
    private static final int BUFFER_SIZE = 4096;

    /**//from  ww  w .  jav  a 2 s .com
     * Downloads a file from a URL
     * @param fileURL HTTP URL of the file to be downloaded
     * @param saveDir path of the directory to save the file
     * @throws IOException
     */
    public static void downloadFile(String fileURL, String saveDir) throws IOException {
        URL url = new URL(fileURL);
        HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
        int responseCode = httpConn.getResponseCode();

        // always check HTTP response code first
        if (responseCode == HttpURLConnection.HTTP_OK) {
            String fileName = "";
            String disposition = httpConn.getHeaderField("Content-Disposition");
            String contentType = httpConn.getContentType();
            int contentLength = httpConn.getContentLength();

            if (disposition != null) {
                // extracts file name from header field
                int index = disposition.indexOf("filename=");
                if (index > 0) {
                    fileName = disposition.substring(index + 10, disposition.length() - 1);
                }
            } else {
                // extracts file name from URL
                fileName = fileURL.substring(fileURL.lastIndexOf("/") + 1, fileURL.length());
            }

            System.out.println("Content-Type = " + contentType);
            System.out.println("Content-Disposition = " + disposition);
            System.out.println("Content-Length = " + contentLength);
            System.out.println("fileName = " + fileName);

            // opens input stream from the HTTP connection
            InputStream inputStream = httpConn.getInputStream();
            String saveFilePath = saveDir + File.separator + fileName;

            // opens an output stream to save into file
            FileOutputStream outputStream = new FileOutputStream(saveFilePath);

            int bytesRead = -1;
            byte[] buffer = new byte[BUFFER_SIZE];
            while ((bytesRead = inputStream.read(buffer)) != -1)
                outputStream.write(buffer, 0, bytesRead);

            outputStream.close();
            inputStream.close();

            System.out.println("File downloaded");
        } else {
            System.out.println("No file to download. Server replied HTTP code: " + responseCode);
        }
        httpConn.disconnect();
    }
}

Related

  1. downloadDirectory(URL dirUrl, File destDir)
  2. downloadFile(File parent, String prefix, String suffix, URL url)
  3. downloadFile(File target, String urlStr)
  4. downloadFile(final String url)
  5. downloadFile(String fileURL, String localFileName, String destinationDir)
  6. downloadFile(String fileURL, String savePath)
  7. downloadFile(String fileURL, String targetDirectory)
  8. downloadFile(String url)
  9. downloadFile(String url, File output)