URL 객체 사용

import java.net.*;
import java.io.*;
import static java.lang.System.out;

class URLTest1
{
	public static void main(String[] args) 
	{
		try{
		URL url=new URL(args[0]);
		// 명령줄 인수로 완전한 형태 - http://www.naver.com
		// ftp://ftp.kaist.ac.kr/pub/
		// http://www.kbs.co.kr
		// file:///c:\myjava\test.html
		out.println("Protocol:" +url.getProtocol());
		out.println("Host :" +url.getHost());
		out.println("Port :" +url.getPort());
		out.println("File :" +url.getFile());
		//포트가 -1을 반환하는 경우가 있는데, 이것은 -1번으로 url접속을 시도하는 것이 아니라
		//프로토콜에 해당하는 디폴트 포트로 접속이 일어난다는 점을 의미
		InputStream is = url.openStream();
		//openStream()메소드를 이용하면 URL이 위치한 곳과 자동으로 접속이 일어나고,
		// 결과로 InputStream이 반환된다.
		BufferedReader br = new BufferedReader(new InputStreamReader(is));
		String contents="";
		while((contents=br.readLine()) !=null) {
			out.println(contents);
		}
		br.close();
		is.close();

		}catch(Exception e) {
			e.printStackTrace();
		}
	}//main()---------
}//////////////////////////////////////////////////////////////////
import java.net.*;
import java.io.*;
//이미지 파일을 읽어 파일로 저장.

class  URLTest2
{
	public static void main(String[] args) throws MalformedURLException, IOException
	{
		String urlStr="http://s~~~90151.jpg";
		URL url = new URL(urlStr);
		// 스트림 얻어서 파일로 저장하자. myimg.jpg
		InputStream is = url.openStream();
		BufferedInputStream bis = new BufferedInputStream(is);
		FileOutputStream fos = new FileOutputStream("myimg.jpg");
		byte ba[] = new byte[1024];
		int n = 0;
		int count=0;
		URLConnection uc=url.openConnection();
		int fileSize=uc.getContentLength();
		System.out.println("파일크기:"+fileSize);
		System.out.println("컨텐트 타입: "+uc.getContentType());

		while((n=bis.read(ba)) !=-1) {
			fos.write(ba,0,n);
			count += n;
			fos.flush();
			System.out.print(((count*100) /fileSize)+"%");
		}
		fos.close();
		bis.close();
		is.close();

	}
}////////////////////////////////////////////////////////


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

InetAddress 클래스 사용  (0) 2011.12.15