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. }  

 

 

 

posted @ 2016-12-13 16:12  枫-  阅读(4839)  评论(0编辑  收藏  举报