zoukankan      html  css  js  c++  java
  • 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. }  

     

     

     

  • 相关阅读:
    通过静态广播监听网络变化,在通过回调通知
    支付宝九宫格
    toolBar
    QQ发送位置(高德地图)
    聊天消息 左右item
    Scrollview 嵌套 RecyclerView 及在Android 5.1版本滑动时 惯性消失问题
    判断软键盘是否弹出 并且隐藏
    Solve Longest Path Problem in linear time
    Why longest path problem doesn't have optimal substructure?
    [leetcode] Reorder List
  • 原文地址:https://www.cnblogs.com/mrray/p/6170382.html
Copyright © 2011-2022 走看看