본문 바로가기

JAVA/Network

BinaryInputStream

//다음 로고 출력,파일 생성

package ex01_web;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

import javax.net.ssl.HttpsURLConnection;

public class Ex03_01_Binary_InputStream {

	public static void main(String[] args) {
		//웹상의 바이너리 파일 읽기
		
		//접속할 주소
		 String spec = "https://t1.daumcdn.net/daumtop_chanel/op/20200723055344399.png";
		//URL 객체선언
		 URL url =null;
		//HttpURLConnection 객체 선언
		HttpsURLConnection con =null;
		//입력스트림 선언 (다음 로고 이미지를 읽는 스트림)
		BufferedInputStream bin=null;
		//출력스트림 선언(C:/ storage/daum.png 파일을 만드는 스트림)
		BufferedOutputStream bout =null;
		
		try {
			
			//URL 객체 생성
			url=new URL(spec);
			
			//HttpURLConnection 객체 생성
			con=(HttpsURLConnection)url.openConnection();
			//입력 스트림 생성
			bin= new BufferedInputStream(con.getInputStream());
			//출력할 파일  File 객체 생성
				File dir =new File("C:/storage");
		if(dir.exists()==false)
		{
			dir.mkdirs();
		}
		String contentType=con.getContentType();
		String exName=contentType.substring(contentType.indexOf("/")+1);
		String fileName="daum."+exName;
		File file =new File(dir,fileName);
		
		
			//출력스트림 생성
		bout=new BufferedOutputStream(new FileOutputStream(file));	
		
		
			//읽은 데이터를 저장할 바이트 배열
			byte[] b=new byte[1024];//1KB씩 읽기
			//실제로 읽은 바이트 수
			int readByte=0;
			//읽기(다음 로고 이미지를 byte[] b 에 저장하기)
			//쓰기(byte[] b 의 내용을 daum.png 파일로 보내기)
			while((readByte=bin.read(b))!=-1)
			{
				bout.write(b,0,readByte);
			}
			
			
			//확인 메시지
			System.out.println(fileName +"파일 생성 완료(다운로드 완료)");
		} catch (MalformedURLException e) {
			System.out.println("url  주소 오류");
		}
		catch (IOException e) {
			System.out.println("url 접속 오류");
		}
		finally {
			try {
				if(bout!=null)bout.close();
				if(bin!=null)bin.close();
				if(con!=null)con.disconnect();
				
				
			} catch (IOException e) {
				
				e.printStackTrace();
			}
		}
	//역순으로 닫기
		
	}

}

//구글 로고 출력,파일 생성

package ex01_web;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

import javax.net.ssl.HttpsURLConnection;

public class Ex03_02 {

	public static void main(String[] args) {
		
	//url 주소
		String spec="https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_92x30dp.png";
		//url객체 선언
		URL url =null;
		//httpconnection 선언
		HttpsURLConnection con =null;
		
		//입력 스트림 선언
		BufferedInputStream bin =null;
		//출력 스트림 선언
		BufferedOutputStream bout=null;
		
		try {
			//url 객체 생성
			url =new URL(spec);
			//접속 설정
			con=(HttpsURLConnection)url.openConnection();
			
			//입력 스트림 생성
			bin=new BufferedInputStream(con.getInputStream());
			String contentType=con.getContentType(); 
			String extName=contentType.substring(contentType.indexOf("/")+1);
			String fileName="num1."+extName;
			//파일 생성할 경로
			File dir =new File("C:/storage");
			//파일 객체 생성
			File file =new File(dir,fileName);
			
			//출력 스트림 생성
			bout=new BufferedOutputStream(new FileOutputStream(file));
			
			//한번에 얼마나 읽어들일래
			byte[]b= new byte[1024];
			//실제로 읽어들인 byte 
			int readByte=0;
					
			while((readByte=bin.read(b))!=-1){
				bout.write(b,0,readByte);
			}
			
			System.out.println(fileName+"파일 생성 완료");
		}
		catch (MalformedURLException e) {
			System.out.println("URL 주소오류");
		}
		catch (IOException e) {
		System.out.println("URL 접속오류");
		}finally {
			try {
				if(bout!=null)bout.close();
				if(bin!=null)bin.close();
				if(con!=null)con.disconnect();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		
		
	}
	
	
}

'JAVA > Network' 카테고리의 다른 글

Encoder,Decoder  (0) 2023.08.17
TextReader  (0) 2023.08.17
HttpURLConnection  (0) 2023.08.17
URL  (0) 2023.08.17
날씨정보 URL 을 파일로 변환하여 원하는 디렉터리에 저장하기  (0) 2023.08.06