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 의 방식으로 추출해보았습니다.
저장 경로는 해당 클래스가있는 프로젝트 폴더입니다.
728x90
'JAVA > Networking' 카테고리의 다른 글
[java/crawling] 크롤링 웹페이지 그대로 복사해오기 (0) | 2022.07.03 |
---|---|
[java/net] 인터넷 URL 이미지 주소로 파일 크기/형태 확인 URLConnection/openConnection (0) | 2022.06.27 |
[java/net] InetAddress ,getByName,getAllByName,getHostAddress 사용 예시 (0) | 2022.06.27 |
댓글