Android2012. 1. 18. 19:38

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
	public String getDownloadFromUrl(String fileName){
		try{		
			File file = new File(CACHE_FOLDER);
		
			if(!file.isDirectory()){//캐시 디렉토리가 없으면 만들기 
				file.mkdir();
			}
			
			URL url = new URL(TEST_DOWNLOAD_URL+fileName);
			InputStream input = null;
			int count = 0;						
			
			input = new BufferedInputStream(url.openStream(), 8192);
			OutputStream output = new FileOutputStream(CACHE_FOLDER+fileName);
			byte data[] = new byte[1024];
			while ((count = input.read(data)) != -1) {
			    output.write(data, 0, count);
			}
			
			output.flush();
			output.close();
			input.close();	
			return CACHE_FOLDER+fileName;//패스 리턴 
		}catch(Exception e){//파일이 없다
			Log.e("downloadImage"," error : " +e);        	
			return null;
		}
		//return Drawable.createFromStream(((java.io.InputStream)new java.net.URL(url).getContent()), "name"); //Drawable 객체로 바로 가져오기
	}
	
	
    public Bitmap getBitmapResource(String path){
        return BitmapFactory.decodeFile(path, null);//bitmap 만들기
    }

  CACHE_FOLDER 에 지정된 url의 파일을 다운로드하여 Bitmap 객체로 만들어주는 샘플 소스입니다. 
다운로드 받은 파일을 활용해야할 경우가 많다면 구지 매번 다운로드받지 않고 임의의 폴더를 생성하여
그곳에 저장시킨 후 다음 번 어플 실행시 해당 폴더의 파일이름을 체크하여 있으면 사용할 수 있게끔 해주면 될것 같네요. 

사용법) 
1
mBitmap = getBitmapResource(getDownloadFromUrl(fileName));


 아예 Drawable 객체로 다운로드 받아와 리턴할수도 있더군요.
 

1
return Drawable.createFromStream(((java.io.InputStream)new java.net.URL(url).getContent()), "name"); //Drawable 객체로 바로 가져오기



Posted by ™설야