【Android开发】网路编程及Internet应用-从指定网站上下载文件

news/2024/5/14 17:10:17/文章来源:https://blog.csdn.net/u013517797/article/details/46489385
利用前面学过的HttpUrlConnection和文件输入输出流来完成从Android端下载指定站点的文件。

写一个编辑框,用来输入要下载文件的URL路径,下面一个按钮,点击实现文件下载
res/layout/main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/ll1"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><EditText android:id="@+id/url"android:layout_width="match_parent"android:layout_height="wrap_content"/><Button android:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="下载"/></LinearLayout>

界面如图


MainActivity:
package com.example.test;  import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;public class MainActivity extends Activity{  private EditText UrlEdit;//获取一个输入url的编辑框对象 private Button button;//声明一个"发送POST请求"按钮对象private Handler handler;//声明一个Handler对象private boolean flag=false;//标记是否成功的变量@Override  public void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.main);UrlEdit=(EditText)findViewById(R.id.url);button=(Button)findViewById(R.id.button);//为"下载"按钮添加单击事件监听button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {//创建一个新线程用于从网络上获取文件new Thread(new Runnable(){@Overridepublic void run() {try {String sourceUrl=UrlEdit.getText().toString();//获取下载地址URL url=new URL(sourceUrl);//创建下载地址对应的URL对象//创建一个连接HttpURLConnection conn=(HttpURLConnection)url.openConnection();InputStream is=conn.getInputStream();//获取输入流对象if(is!=null){String expandName=sourceUrl.substring(sourceUrl.lastIndexOf(".")+1,sourceUrl.length()).toLowerCase();//获取文件的拓展名String fileName=sourceUrl.substring(sourceUrl.lastIndexOf("/")+1,sourceUrl.lastIndexOf("."));//获取文件名//在SD卡上创建文件File file=new File("/sdcard/pictures/"+fileName+"."+expandName);FileOutputStream fos=new FileOutputStream(file);//创建一个文件输出流对象byte buf[]=new byte[1024];//创建一个字节数组//读取文件到输入流对象中while(true){int numread=is.read(buf);if(numread<=0){break;}else{fos.write(buf, 0, numread);}}}is.close();//关闭输入流对象conn.disconnect();//关闭连接flag=true;} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();flag=false;} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();flag=false;}Message m=handler.obtainMessage();//获取一个Messagehandler.sendMessage(m);//发送消息}}).start();//开启线程}});//重写Handler的handleMessage()方法,根据flag标记变量flag的值不同显示不同的提示handler=new Handler(){@Overridepublic void handleMessage(Message msg) {if(flag){Toast.makeText(MainActivity.this, "文件下载完成!", Toast.LENGTH_SHORT).show();}else{Toast.makeText(MainActivity.this, "文件下载失败!", Toast.LENGTH_SHORT).show();}super.handleMessage(msg);}};}}  

最后记得在AndroidManifest.xml配置文件中加入网络访问权限和向内存卡写文件的权限:
<!-- SD卡写入权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- 添加链接网络的权限 -->
<uses-permission android:name="android.permission.INTERNET"/>

运行实例,在下载地址编辑框中输入要下载文件的URL地址,单击下载按钮即可下载文件,下载成功后的文件保存在/sdcard/pictures/路径下。
注意,输入的URL路径必须真实存在且包含文件,不然就会下载失败。

这里我拿http://pics.sc.chinaz.com/files/pic/pic9/201505/apic12027.jpg做实验,里面是一个图片文件,如图



下载结果如图




转载请注明出处:http://blog.csdn.net/acmman/article/details/46489385

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_785767.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站防火墙,您的请求带有不合法参数,已被网站管理设置拦截

生产运行环境&#xff1a; 操作系统&#xff1a;Windows Server 2008 R2 Web中间件&#xff1a;IIS 7.0 程序语言运行环境&#xff1a;ASP.net网站功能&#xff1a;信息内网问题描述&#xff1a;当终端登录信息内网时&#xff0c;自动跳转如下图所示。终端访问出错如下图…

视频课程网站

2019独角兽企业重金招聘Python工程师标准>>> http://open.163.com/ http://xue.taobao.com/ http://jiaoyu.baidu.com/ http://ke.qq.com/ http://www.jikexueyuan.com/ http://www.imooc.com/ 转载于:https://my.oschina.net/u/1390066/blog/471845

大型网站架构演化历程

大型网站的挑战主要来自庞大的用户&#xff0c;高并发的访问和海量数据&#xff0c;任何简单的业务一旦需要处理数以P计的数据和面对数以亿计的用户&#xff0c;问题就会变得棘手。大型网站架构主要就是解决这类问题。本文内容大部分来自《大型网站技术架构》,这本书很值得一看…

15个网站性能测试工具

网站的加载速度是决定网站等级的重要因素&#xff0c;值得站长特别关注。原因很简单&#xff0c;没有人愿意为了打开一个网页而等老半天&#xff0c;换句话说&#xff0c;如果你的网站打开速度很慢&#xff0c;将流失大量的访客&#xff0c;甚至出现多米诺效应的不良影响。在埋…

【HttpClient学习与实战】2.使用httpclient实现快递查询网站

上一次我们自己编写了一个数据接口&#xff0c;并且使用httpClient进行了get和post对http信息进行了请求和获取回复。我们这次去真正的访问一个第三方数据接口&#xff0c;来开发一个实际的应用。我们要完成的是一个快递查询的网站&#xff0c;淘了很久&#xff0c;发现了一个比…

微信-网站 会员整合流程(会员同步登陆)

认证了的服务号&#xff0c;可以实现用户点击微信3x5菜单&#xff0c;跳转到自己微网站&#xff0c;并实现用户自动登录的功能&#xff0c;即可以将微信粉丝与网站用户进行关联&#xff0c;把微信粉丝转换为网站会员。本文只描述大概的接入流程&#xff0c;具体实现代码因不同应…

网站运行状态检测工具

背景&#xff1a; 作为站长&#xff0c;想随时都能关注到自己的网站运行情况&#xff0c;当网站出现异常时&#xff0c;往往需要第一时间知道并进行处理。 此工具即实现定时对网站进行检测&#xff0c;确定其是否能正常访问。 方案&#xff1a; 源码下载 备用地址

ASP.NET MVC3书店--第十节 为网站导航与局部设计做最后的修改

现在我们已经完成了这个网站中的主要功能。但我们还需要为整个网站的导航&#xff0c;首页与书籍列表页面做一点最终的修改。 10.1 创建购物摘要分部视图 首先&#xff0c;我们想要在整个网站中显示用户购物车中的书籍数量&#xff0c;如图10-1所示。 图10-1 在整个网站中显…

常用的软件、网站

前言 整理一下可能常常会使用的软件和服务平台&#xff0c;顺序不分先后 1.编辑类软件 MacDown&#xff1a;要写简历了&#xff0c;要用了&#xff0c;哈哈&#xff0c;平时上传到github的内容也可以现在MacDown上写好&#xff0c;再粘贴到github上传印象笔记&#xff1a;平时记…

夺命雷公狗ThinkPHP项目之----企业网站12之文章添加的实现

我们现在就开始写文章添加了&#xff0c;居然是添加当然布列外&#xff0c;我们还是要先讲模版搞定再说被&#xff1a; <!doctype html> <html> <head><meta charset"UTF-8"><title>后台管理</title><link rel"styleshe…

大电商网站导航用户体验对比

最近挺感兴趣研究电子商务网站的导航&#xff0c;特地找6个网站做横向对比四个综合性大站 http://www.360buy.com/ http://dangdang.com/ http://www.suning.cn/ http://shop.qq.com/ 两个垂直电商站点 http://www.letao.com/ http://www.mbaobao.com/ 先上截图&#xff1a; 京…

【Docker学习总结】7.Docker在容器中部署静态网站

上一篇我们介绍了Docker守护式容器的启动方式&#xff0c;本篇我们来学习如何在Docker容器中部署静态网站。 这里我们将在Docker容器中使用Nginx搭建一个静态网站&#xff0c;通过这个部署&#xff0c;让大家对在前几节中学到的Docker容器知识&#xff0c;有进一步的熟悉和理解…

中文网php怎样盈利维持,如何保持网站稳定的排名?

1、保持网站排名稳定&#xff0c;需要高权重的相关外链想要网站排名长期稳定靠前&#xff0c;外链是重中之重&#xff0c;seo就是这么简单&#xff0c;成&#xff0c;外链&#xff1b;败&#xff0c;外链。所以&#xff0c;要想稳定住排名&#xff0c;网站必须拥有强大的高权重…

linux php搭建网站,linux 搭建php网站许愿墙(示例代码)

首先需要搭建本地yum源&#xff0c;详情参考&#xff1a;我使用Centos 7 做网站服务器&#xff0c;Centos 5 存放数据先配置centos 7配置IPvi /etc/sysconfig/network-scripts/ifcfg-eno16777736 #编辑网卡配置文件&#xff0c;eno16777736为网卡名字我Centos 7设置的I…

Linux运维学习网站收藏

Linux运维之道 1> http://www.linuxidc.com/ //Linux公社&#xff0c;收藏Linux学习的很多知识 2> http://http://www.jb51.net/ //脚本之家&#xff0c;许多脚本基本知识网站 3> http://www.runoob.com/ //记录IT、运维各个方面的一些基础笔记 4> h…

网站会员扫码充值系统

一、简介 微信会员充值系统&#xff0c;适合游戏及第三方平台充值。 二、主要功能 1. 会员支付&#xff1a;填写会员名及金额后&#xff0c;弹出二维码&#xff0c;会员扫码后充值。 2. 支付查询&#xff1a;输入订单号&#xff0c;可以查询订单金额。 3. 接口充值&#xff1a;…

美国购物网站排名

分享一下我老师大神的人工智能教程&#xff01;零基础&#xff0c;通俗易懂&#xff01;http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识&#xff0c;造福人民&#xff0c;实现我们中华民族伟大复兴&#xff01;http://www.cnblogs.com/zijinguang/archive…

www packtpub com电子书网站

分享一下我老师大神的人工智能教程&#xff01;零基础&#xff0c;通俗易懂&#xff01;http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识&#xff0c;造福人民&#xff0c;实现我们中华民族伟大复兴&#xff01;www.packtpub.com支持信用卡支付&#xff0c…

一步步构建大型网站架构

一步步构建大型网站架构 原创 2016-04-17 itivy 架构师联盟之前我简单向大家介绍了各个知名大型网站的架构&#xff0c;MySpace的五个里程碑、Flickr的架构、YouTube的架构、PlentyOfFish的架构、WikiPedia的架构。这几个都很典型&#xff0c;我们可以从中获取很多有关网站架构…

10个高质量PPT模板下载网站

1.PPTSTORE http://www.pptstore.net/ 中国顶级原创PPT模板和KEYNOTE模板下载的高端平台-PPTSTORE 设计师在这里可以发布自己的作品&#xff0c;用户也可以付费下载。里边免费板块的PPT模板质量也还是非常高的&#xff0c;但需要个人花点心思筛选自己要的模板。 2.officePLUS h…