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从网络下载文件的更多相关文章

  1. Android利用Http下载文件

    Android利用Http下载文件 一.场景 下载存文本文件和下载如mp3等大容量的文件 界面 二.代码编写 1.AndroidMainfest.xml中配置 主要是解决网络权限和写SDCard的权限 ...

  2. 教你如何在 Android 使用多线程下载文件

    # 教你如何在 Android 使用多线程下载文件 前言 在 Android 日常开发中,我们会经常遇到下载文件需求,这里我们也可以用系统自带的 api DownloadManager 来解决这个问题 ...

  3. Android 通过SOCKET下载文件的方法

    本文实例讲述了Android通过SOCKET下载文件的方法.分享给大家供大家参考,具体如下: 服务端代码 import java.io.BufferedInputStream; import java ...

  4. Android之访问下载文件

    1.SD卡操作类 FileUtils.java package com.example.mars_1500_download; import java.io.File; import java.io. ...

  5. android:http下载文件并保存到本地或SD卡

    想把文件保存到SD卡中,一定要知道SD卡的路径,获取SD卡路径: Environment.getExternalStorageDirectory() 另外,在保存之前要判断SD卡是否已经安装好,并且可 ...

  6. android 图片网络下载github开源框架之Universal-Image-Loader

    最近在做妙趣剪纸项目,剪纸应用项目链接.发扬传统文化,大家多多关注. 需要自己搭建服务器,我用的是新浪sae,简直秒杀京东云几条街,把图片放在网上下载,但是图片经常下载要遇到很多问题,包括oom等.所 ...

  7. Android OkHttp + Retrofit 下载文件与进度监听

    本文链接 下载文件是一个比较常见的需求.给定一个url,我们可以使用URLConnection下载文件. 使用OkHttp也可以通过流来下载文件. 给OkHttp中添加拦截器,即可实现下载进度的监听功 ...

  8. 【Python】Python的urllib模、urllib2模块的网络下载文件

    因为需要从一些下载一个页PDF文件.但是需要下载PDF有数百个文件,这是不可能用人工点击下载.只是Python有相关模块,所以写一个程序PDF文件下载,顺便熟悉Python的urllib模块和ulrl ...

  9. android NDK的下载-文件太大

    需要FQ,建议使用VPN,下载前准备点时间配置网络环境.我的百度网盘好像有~~不过忘记地址了,改天共享,或者私聊我. 2015.4 Android 5.1 Android Studio https:/ ...

随机推荐

  1. JavaSE、JavaEE、JavaME三者的区别

    1. Java SE(Java Platform,Standard Edition). Java SE 以前称为 J2SE. 它允许开发和部署在桌面.服务器.嵌入式环境和实时环境中使用的 Java 应 ...

  2. Android开发手记(27) Java多线程的操作

    Java中常用的有关线程的操作有,判断线程是否启动.线程强制执行.线程休眠.线程中断.线程让步.线程同步等.下面就一一举例. 首先,我们新建一个MyThread类实现Runnable接口.基于此接口进 ...

  3. iOS目录结构

    默认情况下,每个沙盒含有3个文件夹:Documents, Library 和 tmp.因为应用的沙盒机制,应用只能在几个目录下读写文件 Documents:苹果建议将程序中建立的或在程序中浏览到的文件 ...

  4. C# 多线程详解

    1.使用多线程的几种方式 (1)不需要传递参数,也不需要返回参数 ThreadStart是一个委托,这个委托的定义为void ThreadStart(),没有参数与返回值. 复制代码 代码如下: cl ...

  5. npm的镜像替换成淘宝

    1.得到原本的镜像地址 npm get registry > https://registry.npmjs.org/ 设成淘宝的 npm config set registry http://r ...

  6. java操作excel常用的两种方式

    Excel是我们平时工作中比较常用的用于存储二维表数据的,JAVA也可以直接对Excel进行操作,在这篇博客中将为大家介绍两种操作Excel的方式,分别为:jxl和poi. 对于两者的区别网上有测试如 ...

  7. 【BZOJ1861】【splay】Book 书架

    Description 小 T有一个很大的书柜.这个书柜的构造有些独特,即书柜里的书是从上至下堆放成一列.她用1到n的正整数给每本书都编了号. 小T在看书的时候,每次取出一本书,看完后放回书柜然后再拿 ...

  8. Html5-Canvas实现简易的抽奖转盘

    ###Html5实现抽奖转盘效果 1.实现的基本效果 2.主要的内容 html5中canvas标签的使用 jQueryRotate.js旋转插件 3.主要html代码 <body> < ...

  9. js获取url中的参数对象、js生成带参数的url

    // 获取url中的参数,并返回一个对象 $.getRequestData = function() { var url = location.search; //获取url中"?" ...

  10. 使用Thinkphp框架开发移动端接口

     本文给大家分享的是使用thinkphp框架开发移动端接口的2种方法,一种是开发API,另外一种是实现移动端访问自动切换移动主题模板,从而实现伪app访问,下面我们就来详细看下如何实现吧. 方案一:给 ...