Android从网络下载文件
1.主Activity
public class MainActivity extends Activity {
private Button download=null;
private EditText url=null;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.download=(Button) this.findViewById(R.id.button1);
this.url=(EditText) this.findViewById(R.id.editText1);
this.download.setOnClickListener(new ClickListener());
}
private final class ClickListener implements OnClickListener
{
public void onClick(View v)
{
String httpUrl=url.getText().toString();
try
{
//创建一个URL对象
URL url=new URL(httpUrl);
//下载数据的方法
DownLoad(url);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void DownLoad(final URL url)
{
//开启线程下载数据
new Thread(new Runnable()
{
public void run()
{
try
{
Thread.sleep(2000);
//获取SDCard的路径
String path=Environment.getExternalStorageDirectory().getAbsolutePath().toString();
//新建文件
File file=new File(path+"/Mp3");
//判段文件是否存在
if(!file.exists())
{
//创建目录
file.mkdir();
}
//创建文件,并起名为a.mp3
File files=new File(file.getAbsolutePath(),"a.mp3");
@SuppressWarnings("resource")
//用来保存读取到的网络数据,保存到文件中
FileOutputStream fileoutputstream=new FileOutputStream(files) ;
//获取httpURLConnection
HttpURLConnection http=(HttpURLConnection) url.openConnection();
//设置请求方式
http.setRequestMethod("GET");
//设置连接超时时间
http.setConnectTimeout(5000);
//如果连接成功读取网络数据
if(http.getResponseCode()==200)
{
//得到HttpURLConnection的输入流对象,用拿来读取网络中的数据
InputStream inputstream=http.getInputStream();
//调用WebTools中的getData方法并得到数据
byte[] data=WebTools.getData(inputstream);
//把数据写入到文件中
fileoutputstream.write(data);
System.out.println("下载成功");
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}).start();
}
}
}
2.读取网络数据的WebTools工具类
public class WebTools {
public static byte[] getData(InputStream input) throws Exception
{
//存放数据的byte数组
byte[] buffer=new byte[5000];
//保存数据的输出流对象
ByteArrayOutputStream output=new ByteArrayOutputStream();
int len=0;
while((len=input.read(buffer))!=-1)
{
//写入数据
output.write(buffer, 0, len);
}
//返回输入流中的数据
return output.toByteArray();
}
}
3.界面预览图

4.结果图

Android从网络下载文件的更多相关文章
- Android利用Http下载文件
Android利用Http下载文件 一.场景 下载存文本文件和下载如mp3等大容量的文件 界面 二.代码编写 1.AndroidMainfest.xml中配置 主要是解决网络权限和写SDCard的权限 ...
- 教你如何在 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 图片网络下载github开源框架之Universal-Image-Loader
最近在做妙趣剪纸项目,剪纸应用项目链接.发扬传统文化,大家多多关注. 需要自己搭建服务器,我用的是新浪sae,简直秒杀京东云几条街,把图片放在网上下载,但是图片经常下载要遇到很多问题,包括oom等.所 ...
- Android OkHttp + Retrofit 下载文件与进度监听
本文链接 下载文件是一个比较常见的需求.给定一个url,我们可以使用URLConnection下载文件. 使用OkHttp也可以通过流来下载文件. 给OkHttp中添加拦截器,即可实现下载进度的监听功 ...
- 【Python】Python的urllib模、urllib2模块的网络下载文件
因为需要从一些下载一个页PDF文件.但是需要下载PDF有数百个文件,这是不可能用人工点击下载.只是Python有相关模块,所以写一个程序PDF文件下载,顺便熟悉Python的urllib模块和ulrl ...
- android NDK的下载-文件太大
需要FQ,建议使用VPN,下载前准备点时间配置网络环境.我的百度网盘好像有~~不过忘记地址了,改天共享,或者私聊我. 2015.4 Android 5.1 Android Studio https:/ ...
随机推荐
- OC - 27.CATransition
概述 简介 CATransition又称转场动画,是CAAnimation的子类,可以直接使用 转场动画主要用于为图层提供移入/移出屏幕的动画效果 转场动画常见的应用是UINavigationCont ...
- 实现Bootstrap Carousel Fade Transition 淡入淡出效果
html代码: <div id="carousel" class="carousel slide carousel-fade" data-ride=&qu ...
- 【转】《我的WCF之旅》博文系列汇总
转自:http://www.cnblogs.com/artech/archive/2007/09/15/893838.html WCF是构建和运行互联系统的一系列技术的总称,它是建立在Web Serv ...
- ios开发之ios9UIWebView不显示网页问题
错误描述: App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecu ...
- CSS3的过渡效果(transition)与动画(animation)
1.Transition Transition是一种直观上的效果,让DOM元素的某个属性在固定时间内从一旧值到一新值.目前Firefox.Opera.Safari和Chrome都支持transitio ...
- win7访问windows server 2003服务器出现未知的用户名或者错误的密码(转载)
直接放答案,感谢网友提供答案,否则自已还一直在纳闷,为什么? win7系统的安全机制限制了登陆.只要系统时间和win2003服务器的系统时间相差很多,系统就会阻止其登陆,并显示错误信息:"未 ...
- node应用通过multer模块实现文件上传
multer用于处理文件上传的nodejs中间件,主要跟express框架搭配使用,只支持表单MIME编码为multipart/form-data类型的数据请求. 如果要处理其他编码的表单数据可以通过 ...
- IS打包
1. 目的 让用户可以通过运行一个安装程序,安装程序到系统中正常运行. 2. 注意 当我们用项目向导生成的新项目时,InstallShield只为我们生成两个事件,分别是OnFirstUIBefore ...
- 谷歌制图服务(Google Chart)接口生成二维码
Google公布了制图服务(Google Chart)的接口,这项服务用起来相当简单,只使用浏览器就可以用来为统计数据自动生成图片. 目前谷歌制图服务提供折线图.条状图.饼图.Venn图.散点图.二维 ...
- Notepad++插件之FingerText
FingerText是一个标签触发片段插件记事本.支持多个热点同时编辑,嵌套的热点,动态热点(很多不仅仅是纯文本的,可以通过命令,或触发另一个片段中的片段),热点的文本提示(而不是仅仅是$或#号)和热 ...