본문 바로가기
JAVA

[JAVA] URL에 올려진 파일 다운로드 하는 방법

by 고체물리학 2021. 11. 4.

자바에서 URL에 올려진 파일을 다운로드할 때 사용하는 소스코드

 

[다운로드할 URL]

 

[전체 코드]

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;

public class test {

    public static void main(String[] args) {
    	   String address = "https://~~~~~~~~ ";  // 다운 받을 파일 주소 입력
           
           try {

             URL url = new URL(address);
             ReadableByteChannel rbc = Channels.newChannel(url.openStream());
             FileOutputStream fos = new FileOutputStream("C:\\Users\\Public\\Downloads\\Copy.jpg"); //다운받을 경로 설정
             fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);  // 처음부터 끝까지 다운로드
             fos.close();
             
             System.out.println("파일 다운완료");
             
           } catch (Exception e) {
             e.printStackTrace();
           }

     }

}

 

[결과]

 

 


위의 방법이 동작이 안되거나 Exception에러가 나면 다른 코드를 사용하여 다운받을 수 있다

 

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;

public class test {

    public static void main(String[] args) {
    	   String address = "https://~~~~~~~~~~~~ ";  // 주소 입력
           
           try {
        	   InputStream is = null;
	           URL url = new URL(address);
	           FileOutputStream fos = new FileOutputStream("C:\\Users\\Public\\Downloads\\Copy2.jpg");
	           URLConnection urlConnection = url.openConnection();
	           is = urlConnection.getInputStream();
	           byte[] buffer = new byte[1024];
	           int readBytes;

               while ((readBytes = is.read(buffer)) != -1) {

                    fos.write(buffer, 0, readBytes);
               }
               fos.close();
               System.out.println("파일 다운완료");
             
           } catch (Exception e) {
             e.printStackTrace();
           }

     }

}

 

[결과]

반응형

댓글