Published 2021. 10. 14. 20:12
728x90
반응형

java 파일 다운로드 기본 코드 

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class FileDownload{

	public static void main(String[] args) {

		try {
			URL u = new URL("url 주소");
			String filePath = "파일 다운로드 경로";

			File f = new File(filePath);
            
            // 만약 폴더가 없으면 폴더 생성
			if(!f.exists()) {
				f.mkdirs();
			}

			downloadTo(u, f, true);

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	 private static void downloadTo(URL url, File targetFile, boolean isDirectory) throws IOException{

        HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
        int responseCode = httpConn.getResponseCode();

        if (responseCode == HttpURLConnection.HTTP_OK) {
            String fileName = "";
            String disposition = httpConn.getHeaderField("Content-Disposition");
            File saveFilePath=null;

            if (isDirectory) {
	            if (disposition != null) {
	                int index = disposition.indexOf("filename=");
	                if (index > 0) {
	                    fileName = disposition.substring(index + 10,
	                            disposition.length() - 1);
	                }
	            } else {
	            	String fileURL=url.toString();
	                fileName = fileURL.substring(fileURL.lastIndexOf("/") + 1, fileURL.length());
	                int questionIdx=fileName.indexOf("?");
	                if (questionIdx>=0) {
	                	fileName=fileName.substring(0, questionIdx);
	                }
	                fileName=URLDecoder.decode(fileName);
	            }
	            saveFilePath = new File(targetFile, fileName);
            }
            else {
            	saveFilePath=targetFile;
            }

            // link URL을 사용하여 input Stream
            InputStream inputStream = httpConn.getInputStream();

            // file write output stream
            FileOutputStream outputStream = new FileOutputStream(saveFilePath);

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

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

            // 확인 : 파일 폴더 생성 체크 , 파일 생성되는 지 체크 , 파일 내용 확인
            System.out.println("File downloaded to " + saveFilePath);
        } else {
            System.err.println("No file to download. Server replied HTTP code: " + responseCode);
        }
        httpConn.disconnect();
    }

}
반응형

'프로그래밍 > JAVA' 카테고리의 다른 글

자바 Collection(List, Set, Map) 비교  (0) 2021.12.27
java 티베로 연결  (0) 2021.10.15
UnknownHostException  (0) 2021.10.13
java url생성  (0) 2021.10.12
크론 표현식  (0) 2021.09.16
복사했습니다!