Android利用Http下载文件
一、场景
下载存文本文件和下载如mp3等大容量的文件
界面
二、代码编写
1.AndroidMainfest.xml中配置
主要是解决网络权限和写SDCard的权限
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="linys.download" android:versionCode="1" android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Download" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<!-- 访问网络和操作SD卡 加入的两个权限配置 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="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);
setContentView(R.layout.main);
downFileBtn=(Button)this.findViewById(R.id.downFile);
downMP3Btn=(Button)this.findViewById(R.id.downMP3);
downFileBtn.setOnClickListener(new DownFileClickListener());
downMP3Btn.setOnClickListener(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) {
String urlStr="http://172.17.54.91:8080/download/down.txt";
try {
/*
* 通过URL取得HttpURLConnection
* 要网络连接成功,需在AndroidMainfest.xml中进行权限配置
* <uses-permission android:name="android.permission.INTERNET" />
*/
URL url=new URL(urlStr);
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
//取得inputStream,并进行读取
InputStream input=conn.getInputStream();
BufferedReader in=new BufferedReader(new InputStreamReader(input));
String line=null;
StringBuffer sb=new StringBuffer();
while((line=in.readLine())!=null){
sb.append(line);
}
System.out.println(sb.toString());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
*
* @Project: Android_MyDownload
* @Desciption: 读取任意文件,并将文件保存到手机SDCard
* @Author: LinYiSong
* @Date: 2011-3-25~2011-3-25
*/
class DownMP3ClickListener implements OnClickListener{
@Override
public void onClick(View v) {
String urlStr="http://172.17.54.91:8080/download/1.mp3";
String path="file";
String fileName="2.mp3";
OutputStream output=null;
try {
/*
* 通过URL取得HttpURLConnection
* 要网络连接成功,需在AndroidMainfest.xml中进行权限配置
* <uses-permission android:name="android.permission.INTERNET" />
*/
URL url=new URL(urlStr);
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
//取得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.关闭流
*/
String SDCard=Environment.getExternalStorageDirectory()+"";
String pathName=SDCard+"/"+path+"/"+fileName;//文件存储路径
File file=new File(pathName);
InputStream input=conn.getInputStream();
if(file.exists()){
System.out.println("exits");
return;
}else{
String dir=SDCard+"/"+path;
new File(dir).mkdir();//新建文件夹
file.createNewFile();//新建文件
output=new FileOutputStream(file);
//读取大文件
byte[] buffer=new byte[4*1024];
while(input.read(buffer)!=-1){
output.write(buffer);
}
output.flush();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
output.close();
System.out.println("success");
} catch (IOException e) {
System.out.println("fail");
e.printStackTrace();
}
}
}
}
}
- 大小: 14.5 KB
分享到:
相关推荐
利用http下载文件的小demo,带进度条更新及显示百分比,运行可用
Android应用源码Android平台下通过HTTP协议实现断点续传下载.rar Android应用源码Hibernate4Android.rar Android应用源码http、udp、tcp网络交互组件.rar Android应用源码ListView实现的目录树结构.rar Android应用...
android利用http从网络上下载资源的方法, 内附两种下载方法,一种下下来的资源大小和源文件不等,⊙﹏⊙b汗,导致解析错误。另一种还是好使的,我拿一个apk做的实验(百思不得姐),下下来安装上木问题,自己找个...
Android开发教程:Android SDK中文开发文档 pdf版电子书下载,介绍什么是 Android?Android特性及架构,Android应用程序框架和程序库,Android 运行库和Linux内核,如何安装配置Android SDK、建立应用程序签名、移植...
Android的HttpURLConnections等并不能直接实现表单形式上传文件,必须另类实现。注册时一般是先利用表单上传头像图片得到头像在服务器的地址,再将得到的地址和其它注册信息提交。
利用get和post方式上传文件 还有与底层相关的socket通信
----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...
若是想从电脑或其他手机上传资料到Android手机卡指定目录,那么先用浏览器访问http://192.168.0.100:2112/,进入需要放置文件的目录,点击左侧“文件/上传文件’,指定需要上传到手机的文件,稍后即可完成上传。...
17.1 Android原始码下载 17.2 实机测试 17.2.1 NeoFreeRunner介绍 17.2.2 烧录androidfs.jffs2 17.3 Android移植技术概论 17.3.1 Android底层技术的重要性 17.3.2 Android移植项目介绍 17.3.3 Android的技术优点
首先通过下载总线程数来划分文件的下载区域:利用int range = fileSize / threadCount;得到每一段下载量;每一段的位置是i * range到(i + 1) * rang - 1,注意最后一段的位置是到filesize - 1; 通过Http协议的...
android中利用httpconnection上传文件。可以选择要上传文件的路径,上传网址
因为没有了人为制造的障碍,所以Android开发人员可以自由地编写能够充分利用日益强大的手机硬件的应用程序。因此,对Android感兴趣的开发人员都把Google在2008年发布Android这一举措作为移动技术发展史上的一个非常...
如果要修改代码,则需要把上面重新打包生成的apk文件,利用常规方法反编译后修改smali代码,例如插桩输入log信息。然后再回编译并重新签名。 最后一步:因为system.img中的apk是优化过的,apk主目录下是没有...
Android 中利用SAX ,Dom,pull解析 XML 文件代码 每种方式都介绍了代码,具体的文档在个人博客: http://blog.csdn.net/blueskydyliu/article/details/7055311 中介绍了。
Android利用MediaCodec硬解码H264,AAC文件并播放Demo。相关博客:http://blog.csdn.net/a512337862/article/details/72629755和http://blog.csdn.net/a512337862/article/details/72629755
缓存完全由客户端自行控制(ACache),利用http请求头来完全屏蔽okhttp的缓存体系 上传和下载的进度回调(填了很大的坑) 指定请求回调的最短时间 自动登录和登录状态接口 post提交一个json数据 todo 1.下载策略 /** * ...
手机用USB连接PC,通过PC上网的文档资料,整理前人的资料,并且尝试成功(在小米手机上),工具下载链接:http://download.csdn.net/detail/cofesun/3983398
1.6 利用Android源代码 1.7 本书的示例项目 1.8 小结 第2章 设置开发环境 2.1 设置环境 2.1.1 下载JDK 6 2.1.2 下载Eclipse 3.6 2.1.3 下载Android SDK 2.1.4 命令行窗口 2.1.5 安装ADT...