본문 바로가기
JAVA/Networking

[java/net] 인터넷 URL 이미지 주소를 이용하여 이미지를 내 pc에 copy하기

by java나유 2022. 6. 27.
public static void main(String[] args) throws Exception{
		
		Scanner sc = new Scanner(System.in);
		System.out.println("웹에서 가져올 이미지 주소를 입력하세요");
		String url =sc.next();
		
		URL u = new URL(url); //USL 메소드/사용자 입력값 선언
		
		URLConnection con = u.openConnection(); //URL 메소드 생성
		int imgsize = con.getContentLength(); // 이미지 크기 확인 
		System.out.println(imgsize); //이미지 크기 출력
		String imgtype=con.getContentType(); //이미지 TYPE 확인
		System.out.println(imgtype); // 이미지 TYPE 출력
		
		//openStream():URL만 사용	
		InputStream is =u.openStream(); //InputStream으로 파일 읽기
		BufferedInputStream bi = new BufferedInputStream(is); //URL에서 읽은 파일 임시저장
		byte data1[]=new byte[bi.available()]; // available():파일크기
		FileOutputStream fo = new FileOutputStream("copy.jpg");//내 pc로 저장될 파일명 
		int imgdata=0; //이미지 크기 (숫자) 값 
		int cnt=0; //100으로 나눠줄 값
		while((imgdata=bi.read(data1))!=-1) { //-1은 없음을 뜻합니다. !=-!이면 있다는거겠죠!
			fo.write(data1,0,imgdata); //조각난 파일 붙여넣기
			cnt+=imgdata; 
			System.out.println("다운로드중....."+(cnt*100)/imgsize+"%");
			
		}			
		fo.flush(); //FileOutputStream 메모리 지워주기
		fo.close(); //FileOutputStream 종료
		System.out.println("다운로드가 완료 되었습니다.");
	}

주의해야할 것

  • openStream():URL만 사용
  • byte data1[]=new byte[bi.available()]; 데이터의 크기는 배열[]

 

 

결과값:

progress 의 방식으로 추출해보았습니다.

pc에 잘 저장 되어있습니다.

저장 경로는  해당 클래스가있는 프로젝트 폴더입니다.

728x90

댓글