文档章节

Android利用Http下载文件

丁佳辉
 丁佳辉
发布于 2015/09/23 13:29
字数 812
阅读 112
收藏 0

Android利用Http下载文件

一、场景

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

界面


二、代码编写

 1.AndroidMainfest.xml中配置

主要是解决网络权限和写SDCard的权限

 

 

Java代码  收藏代码

  1. <?xml version="1.0" encoding="utf-8"?>  

  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  

  3.     package="linys.download" android:versionCode="1" android:versionName="1.0">  

  4.     <uses-sdk android:minSdkVersion="8" />  

  5.   

  6.     <application android:icon="@drawable/icon" android:label="@string/app_name">  

  7.         <activity android:name=".Download" android:label="@string/app_name">  

  8.             <intent-filter>  

  9.                 <action android:name="android.intent.action.MAIN" />  

  10.                 <category android:name="android.intent.category.LAUNCHER" />  

  11.             </intent-filter>  

  12.         </activity>  

  13.     </application>  

  14.     <!-- 访问网络和操作SD卡 加入的两个权限配置 -->  

  15.         <uses-permission android:name="android.permission.INTERNET" />  

  16.         <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  

  17. </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.   

  3. import java.io.BufferedReader;  

  4. import java.io.File;  

  5. import java.io.FileOutputStream;  

  6. import java.io.IOException;  

  7. import java.io.InputStream;  

  8. import java.io.InputStreamReader;  

  9. import java.io.OutputStream;  

  10. import java.net.HttpURLConnection;  

  11. import java.net.MalformedURLException;  

  12. import java.net.URL;  

  13.   

  14. import android.app.Activity;  

  15. import android.os.Bundle;  

  16. import android.os.Environment;  

  17. import android.view.View;  

  18. import android.view.View.OnClickListener;  

  19. import android.widget.Button;  

  20. /** 

  21.  *  

  22.  * @Project : Android_MyDownload 

  23.  * @Desciption: 利用Http协议下载文件并存储到SDCard 

  24.     1.创建一个URL对象 

  25.     2.通过URL对象,创建一个HttpURLConnection对象 

  26.     3.得到InputStream 

  27.     4.从InputStream当中读取数据 

  28.     存到SDCard 

  29.     1.取得SDCard路径 

  30.     2.利用读取大文件的IO读法,读取文件 

  31.  *  

  32.  * @Author: LinYiSong 

  33.  * @Date: 2011-3-25~2011-3-25 

  34.  */  

  35. public class MyDownload extends Activity {  

  36.       

  37.     private Button downFileBtn;  

  38.     private Button downMP3Btn;  

  39.     /** Called when the activity is first created. */  

  40.     @Override  

  41.     public void onCreate(Bundle savedInstanceState) {  

  42.         super.onCreate(savedInstanceState);  

  43.         setContentView(R.layout.main);  

  44.           

  45.         downFileBtn=(Button)this.findViewById(R.id.downFile);  

  46.         downMP3Btn=(Button)this.findViewById(R.id.downMP3);  

  47.           

  48.         downFileBtn.setOnClickListener(new DownFileClickListener());  

  49.         downMP3Btn.setOnClickListener(new DownMP3ClickListener());  

  50.     }  

  51.       

  52.     /** 

  53.      *  

  54.      * @Project: Android_MyDownload 

  55.      * @Desciption: 只能读取文本文件,读取mp3文件会出现内存溢出现象 

  56.      * @Author: LinYiSong 

  57.      * @Date: 2011-3-25~2011-3-25 

  58.      */  

  59.     class DownFileClickListener implements OnClickListener{  

  60.         @Override  

  61.         public void onClick(View v) {  

  62.             String urlStr="http://172.17.54.91:8080/download/down.txt";  

  63.             try {  

  64.                 /* 

  65.                  * 通过URL取得HttpURLConnection 

  66.                  * 要网络连接成功,需在AndroidMainfest.xml中进行权限配置 

  67.                  * <uses-permission android:name="android.permission.INTERNET" /> 

  68.                  */  

  69.                 URL url=new URL(urlStr);  

  70.                 HttpURLConnection conn=(HttpURLConnection)url.openConnection();  

  71.                 //取得inputStream,并进行读取  

  72.                 InputStream input=conn.getInputStream();  

  73.                 BufferedReader in=new BufferedReader(new InputStreamReader(input));  

  74.                 String line=null;  

  75.                 StringBuffer sb=new StringBuffer();  

  76.                 while((line=in.readLine())!=null){  

  77.                     sb.append(line);  

  78.                 }  

  79.                 System.out.println(sb.toString());  

  80.                   

  81.             } catch (MalformedURLException e) {  

  82.                 e.printStackTrace();  

  83.             } catch (IOException e) {  

  84.                 e.printStackTrace();  

  85.             }  

  86.         }  

  87.     }  

  88.     /** 

  89.      *  

  90.      * @Project: Android_MyDownload 

  91.      * @Desciption: 读取任意文件,并将文件保存到手机SDCard 

  92.      * @Author: LinYiSong 

  93.      * @Date: 2011-3-25~2011-3-25 

  94.      */  

  95.     class DownMP3ClickListener implements OnClickListener{  

  96.   

  97.         @Override  

  98.         public void onClick(View v) {  

  99.             String urlStr="http://172.17.54.91:8080/download/1.mp3";  

  100.             String path="file";  

  101.             String fileName="2.mp3";  

  102.             OutputStream output=null;  

  103.             try {  

  104.                 /* 

  105.                  * 通过URL取得HttpURLConnection 

  106.                  * 要网络连接成功,需在AndroidMainfest.xml中进行权限配置 

  107.                  * <uses-permission android:name="android.permission.INTERNET" /> 

  108.                  */  

  109.                 URL url=new URL(urlStr);  

  110.                 HttpURLConnection conn=(HttpURLConnection)url.openConnection();  

  111.                 //取得inputStream,并将流中的信息写入SDCard  

  112.                   

  113.                 /* 

  114.                  * 写前准备 

  115.                  * 1.在AndroidMainfest.xml中进行权限配置 

  116.                  * <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

  117.                  * 取得写入SDCard的权限 

  118.                  * 2.取得SDCard的路径: Environment.getExternalStorageDirectory() 

  119.                  * 3.检查要保存的文件上是否已经存在 

  120.                  * 4.不存在,新建文件夹,新建文件 

  121.                  * 5.将input流中的信息写入SDCard 

  122.                  * 6.关闭流 

  123.                  */  

  124.                 String SDCard=Environment.getExternalStorageDirectory()+"";  

  125.                 String pathName=SDCard+"/"+path+"/"+fileName;//文件存储路径  

  126.                   

  127.                 File file=new File(pathName);  

  128.                 InputStream input=conn.getInputStream();  

  129.                 if(file.exists()){  

  130.                     System.out.println("exits");  

  131.                     return;  

  132.                 }else{  

  133.                     String dir=SDCard+"/"+path;  

  134.                     new File(dir).mkdir();//新建文件夹  

  135.                     file.createNewFile();//新建文件  

  136.                     output=new FileOutputStream(file);  

  137.                     //读取大文件  

  138.                     byte[] buffer=new byte[4*1024];  

  139.                     while(input.read(buffer)!=-1){  

  140.                         output.write(buffer);  

  141.                     }  

  142.                     output.flush();  

  143.                 }  

  144.             } catch (MalformedURLException e) {  

  145.                 e.printStackTrace();  

  146.             } catch (IOException e) {  

  147.                 e.printStackTrace();  

  148.             }finally{  

  149.                 try {  

  150.                         output.close();  

  151.                         System.out.println("success");  

  152.                     } catch (IOException e) {  

  153.                         System.out.println("fail");  

  154.                         e.printStackTrace();  

  155.                     }  

  156.             }  

  157.         }  

  158.           

  159.     }  

  160. }  

 

 

 


© 著作权归作者所有

丁佳辉
粉丝 20
博文 446
码字总数 203356
作品 0
浦东
程序员
私信 提问
Android sdk manager更新下载慢或无法下载

关于android sdk manager更新下载慢或无法下载有2中解决方法: 1.修改hosts文件,修改为如下 在Android SDK Manager的Tools->Option->others选项中勾选“Force https://...sources to be fetc...

ksfzhaohui
2014/04/22
1K
0
NDK环境搭建和编译第一个程序

看了网上很多文档,学习很多前人的经验,也遇到很多问题,整理分享一下。 环境搭建:(windos XP操作系统) 1.到Cygwin的官方网站下载Cygwin的安装程序,地址是: http://www.cygwin.com/setup...

kelivin
2012/11/24
1K
1
[深入理解Android卷二 全文-第一章]开发环境部署

由于《深入理解Android 卷一》和《深入理解Android卷二》不再出版,而知识的传播不应该因为纸质媒介的问题而中断,所以我将在OSC博客中全文转发这两本书的全部内容。 第1章 开发环境部署 本章...

邓凡平
2015/08/03
1K
0
01、使用 intel硬件加速执行管理器,提速你的模拟器

背景 刚开始接触android的开发学习,吐槽下它的模拟器,启动速度忒慢了,简直无法忍受。但是没办法,手头只有一部4.4系统的机子,对于测试以前版本及屏幕分辨率的运行情况只能求助与模拟器了...

evilgod528
2014/07/19
617
0
[PHP]通过 PHP for Android 利用PHP编写Android应用教程

本文摘自 IT博客 http://www.zhangdafen.com 概述 Android 上的主要开发语言是Java,让很多PHPer觉得非常遗憾。但是自从ASE(Android Scripting Environment-Android脚本环境)诞生后,允许用...

81028386
2013/03/18
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

作为一个(IT)程序员!聊天没有话题?试试这十二种技巧

首先呢?我是一名程序员,经常性和同事没话题。 因为每天都会有自己的任务要做,程序员对于其他行业来说;是相对来说比较忙的。你会经常看到程序员在发呆、调试密密麻麻代码、红色报错发呆;...

小英子wep
52分钟前
10
0
【SpringBoot】产生背景及简介

一、SpringBoot介绍 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程,该框架使用了特定的方式来进行配置,从而使开发人员不再需要...

zw965
今天
4
0
简述并发编程分为三个核心问题:分工、同步、互斥。

总的来说,并发编程可以总结为三个核心问题:分工、同步、互斥。 所谓分工指的是如何高效地拆解任务并分配给线程,而同步指的是线程之间如何协作,互斥则是保证同一时刻只允许一个线程访问共...

dust8080
今天
6
0
OSChina 周四乱弹 —— 当你简历注水但还是找到了工作

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @花间小酌 :#今日歌曲推荐# 分享成龙的单曲《男儿当自强》。 《男儿当自强》- 成龙 手机党少年们想听歌,请使劲儿戳(这里) @hxg2016 :刚在...

小小编辑
今天
3.2K
22
靠写代码赚钱的一些门路

作者 @mezod 译者 @josephchang10 如今,通过自己的代码去赚钱变得越来越简单,不过对很多人来说依然还是很难,因为他们不知道有哪些门路。 今天给大家分享一个精彩的 GitHub 库,这个库整理...

高级农民工
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部