Android利用Http下载文件
Android利用Http下载文件
一、场景
下载存文本文件和下载如mp3等大容量的文件
界面

二、代码编写
1.AndroidMainfest.xml中配置
主要是解决网络权限和写SDCard的权限
- "1.0" encoding="utf-8"?>
- "http://schemas.android.com/apk/res/android"
- package="linys.download" android:versionCode="1" android:versionName="1.0">
- "8" />
- <application android:icon="@drawable/icon" android:label="@string/app_name">
- ".Download" android:label="@string/app_name">
- <action android:name="android.intent.action.MAIN" />
- "android.intent.category.LAUNCHER" />
- </activity>
- <!-- 访问网络和操作SD卡 加入的两个权限配置 -->
- "android.permission.INTERNET" />
- "android.permission.WRITE_EXTERNAL_STORAGE" />
- </manifest>
2.Activity编写
利用Http协议下载文件并存储到SDCard
1.创建一个URL对象
2.通过URL对象,创建一个HttpURLConnection对象
3.得到InputStream
4.从InputStream当中读取数据
存到SDCard
1.取得SDCard路径
2.利用读取大文件的IO读法,读取文件
- package linys.download;
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.OutputStream;
- import java.net.HttpURLConnection;
- import java.net.MalformedURLException;
- import java.net.URL;
- import android.app.Activity;
- import android.os.Bundle;
- import android.os.Environment;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- /**
- *
- * @Project: Android_MyDownload
- * @Desciption: 利用Http协议下载文件并存储到SDCard
- 1.创建一个URL对象
- 2.通过URL对象,创建一个HttpURLConnection对象
- 3.得到InputStream
- 4.从InputStream当中读取数据
- 存到SDCard
- 1.取得SDCard路径
- 2.利用读取大文件的IO读法,读取文件
- *
- * @Author: LinYiSong
- * @Date: 2011-3-25~2011-3-25
- */
- public class MyDownload extends Activity {
- private Button downFileBtn;
- private Button downMP3Btn;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- this.findViewById(R.id.downFile);
- this.findViewById(R.id.downMP3);
- downFileBtn.setOnClickListener(new DownFileClickListener());
- new DownMP3ClickListener());
- /**
- *
- * @Project: Android_MyDownload
- * @Desciption: 只能读取文本文件,读取mp3文件会出现内存溢出现象
- * @Author: LinYiSong
- * @Date: 2011-3-25~2011-3-25
- */
- class DownFileClickListener implements OnClickListener{
- @Override
- public void onClick(View v) {
- "http://172.17.54.91:8080/download/down.txt";
- try {
- /*
- * 通过URL取得HttpURLConnection
- * 要网络连接成功,需在AndroidMainfest.xml中进行权限配置
- * <uses-permission android:name="android.permission.INTERNET" />
- */
- new URL(urlStr);
- //取得inputStream,并进行读取
- BufferedReader in=new BufferedReader(new InputStreamReader(input));
- null;
- new StringBuffer();
- while((line=in.readLine())!=null){
- }
- catch (MalformedURLException e) {
- } catch (IOException e) {
- }
- }
- /**
- *
- * @Project: Android_MyDownload
- * @Desciption: 读取任意文件,并将文件保存到手机SDCard
- * @Author: LinYiSong
- * @Date: 2011-3-25~2011-3-25
- */
- class DownMP3ClickListener implements OnClickListener{
- @Override
- public void onClick(View v) {
- "http://172.17.54.91:8080/download/1.mp3";
- "file";
- "2.mp3";
- null;
- try {
- /*
- * 通过URL取得HttpURLConnection
- * 要网络连接成功,需在AndroidMainfest.xml中进行权限配置
- * <uses-permission android:name="android.permission.INTERNET" />
- */
- new URL(urlStr);
- //取得inputStream,并将流中的信息写入SDCard
- /*
- * 写前准备
- * 1.在AndroidMainfest.xml中进行权限配置
- * <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- * 取得写入SDCard的权限
- * 2.取得SDCard的路径: Environment.getExternalStorageDirectory()
- * 3.检查要保存的文件上是否已经存在
- * 4.不存在,新建文件夹,新建文件
- * 5.将input流中的信息写入SDCard
- * 6.关闭流
- */
- "";
- "/"+path+"/"+fileName;//文件存储路径
- File file=new File(pathName);
- if(file.exists()){
- "exits");
- return;
- else{
- "/"+path;
- new File(dir).mkdir();//新建文件夹
- //新建文件
- new FileOutputStream(file);
- //读取大文件
- byte[] buffer=new byte[4*1024];
- while(input.read(buffer)!=-1){
- }
- }
- catch (MalformedURLException e) {
- } catch (IOException e) {
- }finally{
- try {
- System.out.println("success");
- catch (IOException e) {
- "fail");
- }
- }
- }
- }
Android利用Http下载文件的更多相关文章
- 教你如何在 Android 使用多线程下载文件
# 教你如何在 Android 使用多线程下载文件 前言 在 Android 日常开发中,我们会经常遇到下载文件需求,这里我们也可以用系统自带的 api DownloadManager 来解决这个问题 ...
- Android 通过SOCKET下载文件的方法
本文实例讲述了Android通过SOCKET下载文件的方法.分享给大家供大家参考,具体如下: 服务端代码 import java.io.BufferedInputStream; import java ...
- Android之访问下载文件
1.SD卡操作类 FileUtils.java package com.example.mars_1500_download; import java.io.File; import java.io. ...
- android:http下载文件并保存到本地或SD卡
想把文件保存到SD卡中,一定要知道SD卡的路径,获取SD卡路径: Environment.getExternalStorageDirectory() 另外,在保存之前要判断SD卡是否已经安装好,并且可 ...
- Android OkHttp + Retrofit 下载文件与进度监听
本文链接 下载文件是一个比较常见的需求.给定一个url,我们可以使用URLConnection下载文件. 使用OkHttp也可以通过流来下载文件. 给OkHttp中添加拦截器,即可实现下载进度的监听功 ...
- android多线程断点续传下载文件
一.目标 1.多线程抢占服务器资源下载. 2.断点续传. 二.实现思路. 假设分为三个线程: 1.各个线程分别向服务器请求文件的不同部分. 这个涉及Http协议,可以在Header中使用Range参数 ...
- android NDK的下载-文件太大
需要FQ,建议使用VPN,下载前准备点时间配置网络环境.我的百度网盘好像有~~不过忘记地址了,改天共享,或者私聊我. 2015.4 Android 5.1 Android Studio https:/ ...
- Android根据URL下载文件保存到SD卡
//下载具体操作 private void download() { try { URL url = new URL(downloadUrl); //打开连接 URLConnection conn = ...
- Android中如何下载文件并显示下载进度
原文地址:http://jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1125/2057.html 这里主要讨论三种方式:AsyncTask.Serv ...
随机推荐
- IE浏览器上传文件时本地路径变成”C:\fakepath\”的问题【转】
转自:http://www.iefans.net/ie-shangchuan-bendi-lujing-fakepath/ 在使用<input id="file_upl" t ...
- Python日志输出——logging模块
Python日志输出——logging模块 标签: loggingpythonimportmodulelog4j 2012-03-06 00:18 31605人阅读 评论(8) 收藏 举报 分类: P ...
- MM1排队系统
#coding=utf-8 import time import random as rd #import math import pylab as pl def simulate(nameda,u) ...
- LINUX下的时间与时区的设置
在RHEL下,如果只装英文版系统,设置好时区以后(上海时间,UTC) 在命令行下用date命令查看,总是与实际的北京时间差8小时,其实硬件时间都是准确的.会带来视觉不便. 今天下决心解决此问题,不过也 ...
- 超快的 FastText
Word2Vec 作者.脸书科学家 Mikolov 文本分类新作 fastText:方法简单,号称并不需要深度学习那样几小时或者几天的训练时间,在普通 CPU 上最快几十秒就可以训练模型,得到不错的结 ...
- POJ 2151 Check the difficulty of problems (概率dp)
题意:给出m.t.n,接着给出t行m列,表示第i个队伍解决第j题的概率. 现在让你求:每个队伍都至少解出1题,且解出题目最多的队伍至少要解出n道题的概率是多少? 思路:求补集. 即所有队伍都解出题目的 ...
- (11)nehe教程5---3D空间
3D空间: 我们使用多边形和四边形创建3D物体,在这一课里,我们把三角形变为立体的金子塔形状,把四边形变为立方体. 在上节课的内容上作些扩展,我们现在开始生成真正的3D对象,而不是象前两节课中那样3D ...
- js小技巧(一)
事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture(); event.srcE ...
- jquery easyUi 配置默认页码
jquery easyUI用pagenation 属性如果修改其默认加载页面显示,配置该怎样写? 注意区分datagrid的pagenation分页的区别,代码如下. if ($.fn.paginat ...
- ks全自动安装centos
1. 全新安装centos,选择好所需定制包 2. 完成安装后会在root下面生成一个install.log(rpm包列表)anaconda-ks.cfg(下文的ks.cfg基于此文件修改) 3. 将 ...