Android利用Http下載文件


Android利用Http下載文件

一、場景

   下載存文本文件和下載如mp3等大容量的文件

界面


二、代碼編寫

 1.AndroidMainfest.xml中配置

主要是解決網絡權限和寫SDCard的權限

 

 

Java代碼   收藏代碼
  1. "1.0" encoding="utf-8"?>  
  2. "http://schemas.android.com/apk/res/android"  
  3. package="linys.download" android:versionCode="1" android:versionName="1.0">  
  4. "8" />  
  5.     <application android:icon="@drawable/icon" android:label="@string/app_name">  
  6. ".Download" android:label="@string/app_name">  
  7.                 <action android:name="android.intent.action.MAIN" />  
  8. "android.intent.category.LAUNCHER" />  
  9.         </activity>  
  10.     <!-- 訪問網絡和操作SD卡 加入的兩個權限配置 -->  
  11. "android.permission.INTERNET" />  
  12. "android.permission.WRITE_EXTERNAL_STORAGE" />  
  13. </manifest>  

 

2.Activity編寫

 利用Http協議下載文件並存儲到SDCard
    1.創建一個URL對象
    2.通過URL對象,創建一個HttpURLConnection對象
    3.得到InputStream
    4.從InputStream當中讀取數據
    存到SDCard
    1.取得SDCard路徑
    2.利用讀取大文件的IO讀法,讀取文件

Java代碼   收藏代碼
  1. package linys.download;  
  2. import java.io.BufferedReader;  
  3. import java.io.File;  
  4. import java.io.FileOutputStream;  
  5. import java.io.IOException;  
  6. import java.io.InputStream;  
  7. import java.io.InputStreamReader;  
  8. import java.io.OutputStream;  
  9. import java.net.HttpURLConnection;  
  10. import java.net.MalformedURLException;  
  11. import java.net.URL;  
  12. import android.app.Activity;  
  13. import android.os.Bundle;  
  14. import android.os.Environment;  
  15. import android.view.View;  
  16. import android.view.View.OnClickListener;  
  17. import android.widget.Button;  
  18. /** 
  19.  *  
  20.  * @Project: Android_MyDownload 
  21.  * @Desciption: 利用Http協議下載文件並存儲到SDCard 
  22.     1.創建一個URL對象 
  23.     2.通過URL對象,創建一個HttpURLConnection對象 
  24.     3.得到InputStream 
  25.     4.從InputStream當中讀取數據 
  26.     存到SDCard 
  27.     1.取得SDCard路徑 
  28.     2.利用讀取大文件的IO讀法,讀取文件 
  29.  *  
  30.  * @Author: LinYiSong 
  31.  * @Date: 2011-3-25~2011-3-25 
  32.  */  
  33. public class MyDownload extends Activity {  
  34.     private Button downFileBtn;  
  35. private Button downMP3Btn;  
  36. /** Called when the activity is first created. */  
  37. @Override  
  38. public void onCreate(Bundle savedInstanceState) {  
  39. super.onCreate(savedInstanceState);  
  40.           
  41. this.findViewById(R.id.downFile);  
  42. this.findViewById(R.id.downMP3);  
  43.         downFileBtn.setOnClickListener(new DownFileClickListener());  
  44. new DownMP3ClickListener());  
  45.       
  46. /** 
  47.      *  
  48.      * @Project: Android_MyDownload 
  49.      * @Desciption: 只能讀取文本文件,讀取mp3文件會出現內存溢出現象 
  50.      * @Author: LinYiSong 
  51.      * @Date: 2011-3-25~2011-3-25 
  52.      */  
  53. class DownFileClickListener implements OnClickListener{  
  54. @Override  
  55. public void onClick(View v) {  
  56. "http://172.17.54.91:8080/download/down.txt";  
  57. try {  
  58. /* 
  59.                  * 通過URL取得HttpURLConnection 
  60.                  * 要網絡連接成功,需在AndroidMainfest.xml中進行權限配置 
  61.                  * <uses-permission android:name="android.permission.INTERNET" /> 
  62.                  */  
  63. new URL(urlStr);  
  64.                 //取得inputStream,並進行讀取  
  65.                 BufferedReader in=new BufferedReader(new InputStreamReader(input));  
  66. null;  
  67. new StringBuffer();  
  68. while((line=in.readLine())!=null){  
  69.                 }  
  70.                   
  71. catch (MalformedURLException e) {  
  72.             } catch (IOException e) {  
  73.             }  
  74.     }  
  75. /** 
  76.      *  
  77.      * @Project: Android_MyDownload 
  78.      * @Desciption: 讀取任意文件,並將文件保存到手機SDCard 
  79.      * @Author: LinYiSong 
  80.      * @Date: 2011-3-25~2011-3-25 
  81.      */  
  82. class DownMP3ClickListener implements OnClickListener{  
  83.         @Override  
  84. public void onClick(View v) {  
  85. "http://172.17.54.91:8080/download/1.mp3";  
  86. "file";  
  87. "2.mp3";  
  88. null;  
  89. try {  
  90. /* 
  91.                  * 通過URL取得HttpURLConnection 
  92.                  * 要網絡連接成功,需在AndroidMainfest.xml中進行權限配置 
  93.                  * <uses-permission android:name="android.permission.INTERNET" /> 
  94.                  */  
  95. new URL(urlStr);  
  96.                 //取得inputStream,並將流中的信息寫入SDCard  
  97.                 /* 
  98.                  * 寫前准備 
  99.                  * 1.在AndroidMainfest.xml中進行權限配置 
  100.                  * <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
  101.                  * 取得寫入SDCard的權限 
  102.                  * 2.取得SDCard的路徑: Environment.getExternalStorageDirectory() 
  103.                  * 3.檢查要保存的文件上是否已經存在 
  104.                  * 4.不存在,新建文件夾,新建文件 
  105.                  * 5.將input流中的信息寫入SDCard 
  106.                  * 6.關閉流 
  107.                  */  
  108. "";  
  109. "/"+path+"/"+fileName;//文件存儲路徑  
  110.                 File file=new File(pathName);  
  111.                 if(file.exists()){  
  112. "exits");  
  113. return;  
  114. else{  
  115. "/"+path;  
  116. new File(dir).mkdir();//新建文件夾  
  117. //新建文件  
  118. new FileOutputStream(file);  
  119. //讀取大文件  
  120. byte[] buffer=new byte[4*1024];  
  121. while(input.read(buffer)!=-1){  
  122.                     }  
  123.                 }  
  124. catch (MalformedURLException e) {  
  125.             } catch (IOException e) {  
  126.             }finally{  
  127. try {  
  128.                         System.out.println("success");  
  129. catch (IOException e) {  
  130. "fail");  
  131.                     }  
  132.         }  
  133.     }  
  134. }  

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM