프로그래밍 정리/안드로이드

[안드로이드예제] HTTP로 다운로드 받은 파일을 SDCard에 저장하기 [출처] [안드로이드예제] HTTP로 다운로드 받은 파일을 SDCard에 저장하기

주누다 2012. 6. 12. 13:22
반응형

주소 : http://blog.naver.com/PostView.nhn?blogId=q1q3q5&logNo=10099522351



  1. try {   
  2.     //다운로드 받을 URL에 대한 객체를 생성한다.   
  3.     //
  4.     URL url = new URL("http://somewhere.com/some/webhosted/file");   
  5.   
  6.     // URL로 부터 connection 객체를 를 생성한다.
  7.     HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();   
  8.   
  9.     //생성된 커넥션에 대해 추가적인 설정을 지정한다. 여기서는 get방식의 요청을 설정   
  10.     urlConnection.setRequestMethod("GET");   
  11.     urlConnection.setDoOutput(true);   
  12.   
  13.     //웹서버에 연결한다.   
  14.     urlConnection.connect();   
  15.   
  16.     //파일을 저장하기 위한 경로를 지정한다.   
  17.     //이 예제에서는 sdcard의 root 디렉토리에 파일을 저장한다.   
  18.     //
  19.     File SDCardRoot = Environment.getExternalStorageDirectory();   
  20.     //SDCard root 디렉토리에 somefile.txt 파일에 파일을 저장하기 위해   
  21.     //파일 객체를 생성한다.   
  22.     File file = new File(SDCardRoot,"somefile.ext");   
  23.   
  24.     //파일을 오픈한다. 
  25.     FileOutputStream fileOutput = new FileOutputStream(file);   
  26.   
  27.     //인터넷으로 부터 데이터를 읽어들이기 위한 입력스트림을 얻어온다.   
  28.     InputStream inputStream = urlConnection.getInputStream();   
  29.   
  30.     //파일의 전체 크기를 얻어온다.
  31.     int totalSize = urlConnection.getContentLength();   
  32.     //다운로드 받을 전체 바이트 크기를 변수에 저장한다.   
  33.     int downloadedSize = 0;   
  34.   
  35.     //버퍼를 생성한다.
  36.     byte[] buffer = new byte[1024];   
  37.     int bufferLength = 0//임시로 사용할 버퍼의 크기 지정
  38.   
  39.     //입력버퍼로 부터 데이터를 읽어서 내용을 파일에 쓴다.   
  40.     while ( (bufferLength = inputStream.read(buffer)) > 0 ) {   
  41.         //버퍼에 읽어들인 데이터를 파일에 쓴다.   
  42.         fileOutput.write(buffer, 0, bufferLength);   
  43.         //다운로드 받은 바이트수를 계산한다.
  44.         downloadedSize += bufferLength;   
  45.         //progressDialog에 다운로드 받은 바이트수를 표시해 준다.  <-따로 progressDialog스레드를 작성해둘것
  46.         updateProgress(downloadedSize, totalSize);   
  47.   
  48.     }   
  49.     //작업이 끝나면 파일을 close하여 저장한다.  
  50.     fileOutput.close();   
  51.   
  52. //예외가 발생한 경우 다음 catch 루틴을 처리한다.
  53. } catch (MalformedURLException e) {   
  54.     e.printStackTrace();   
  55. catch (IOException e) {   
  56.     e.printStackTrace();   
  57. }  


반응형