android下载简单工具类
功能是实现下载文件,图片或MP3等,为了简单起见使用单线程,此代码为MarsAndroid教程的复制品,放在此处,留着参考。
首先是一个得到字节流随后保存到内存卡上的工具类:
package com.example.utils; import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream; import android.os.Environment; public class FileUtils {
private String SDpath;
public String getSDpath(){
return SDpath;
}
public FileUtils(){
//得到当前外部存储设备的目录,即/SDCARD,后边加"/"为了之后方便
SDpath=Environment.getExternalStorageDirectory()+"/";
}
/**
* 在SD卡上创建文件
* @param fileName
* @return File
* @throws IOException
*/
public File creatSDFile(String fileName) throws IOException{
File file=new File(SDpath+fileName);
file.createNewFile();
return file;
}
/**
* 在SDCARD创建目录
* @param dirName
* @return
*/
public File creatSDDir(String dirName){
File dir=new File(SDpath+dirName);
dir.mkdir();
return dir;
}
public boolean isFileExist(String fileName){
File file=new File(fileName);
return file.exists();
}
/**
* 将一个InputStream里的数据写入SD卡
*/
public File write2SDFromInput(String path,String fileName,InputStream is){
File file=null;
OutputStream os=null;
try{
creatSDDir(path);
file=creatSDFile(path+fileName);
os=new FileOutputStream(file);
byte buffer[]=new byte[4*1024];//4kb
while((is.read(buffer))!=-1){
os.write(buffer);
}
os.flush();
System.out.println("write to "+path+"sucess!");
}catch(Exception e){
e.printStackTrace();
}finally{
try{
os.close();
}catch(Exception e){
e.printStackTrace();
}
}
return file;
} }
随后是文件下载类:
package com.example.utils; import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL; public class HttpDownloader {
private URL url=null;
//此方法返回文本,但并未保存到SD卡
public String downloadText(String urlstr){
StringBuffer sb=new StringBuffer();
String line=null;
BufferedReader br=null;
try{
url=new URL(urlstr);
HttpURLConnection con= (HttpURLConnection)url.openConnection();
br=new BufferedReader(new InputStreamReader(con.getInputStream()));
while((line=br.readLine())!=null){
sb.append(line);
}
}catch(Exception e){
e.printStackTrace();
}finally{
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return sb.toString();
}
/**
*
* @param urlstr
* @param path
* @param fileName
* @return -1-error,0-success,1-file exist
*/
public int downloadMP3(String urlstr,String path,String fileName){
InputStream is=null;
try{
FileUtils fileUtils=new FileUtils();
if(fileUtils.isFileExist(path+fileName)){
return 1;
}else{
is=getInputStreamFromUrl(urlstr);
File resultfile=fileUtils.write2SDFromInput(path, fileName, is);
if(resultfile==null){
return -1;
}
}
}catch(Exception e){
e.printStackTrace();
return -1;
}finally{
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return 0;
}
private InputStream getInputStreamFromUrl(String urlstr)
throws MalformedURLException,IOException{
URL url=new URL(urlstr);
HttpURLConnection con=(HttpURLConnection)url.openConnection();
InputStream is=con.getInputStream();
return is;
} }
android下载简单工具类的更多相关文章
- (转载)实例详解Android快速开发工具类总结
实例详解Android快速开发工具类总结 作者:LiJinlun 字体:[增加 减小] 类型:转载 时间:2016-01-24我要评论 这篇文章主要介绍了实例详解Android快速开发工具类总结的相关 ...
- 一个使用命令行编译Android项目的工具类
一个使用命令行编译Android项目的工具类 简单介绍 编译apk项目须要使用的几个工具,基本都在sdk中,它们各自是(Windows系统): 1.aapt.exe 资源打包工具 2.android. ...
- Android 软件管理工具类Utils
Android 软件管理工具类Utils /** * Created by uilubo on 2015/9/30. * 工具类 */ public class Utils { public stat ...
- java基础之JDBC三:简单工具类的提取及应用
简单工具类: public class JDBCSimpleUtils { /** * 私有构造方法 */ private JDBCSimpleUtils() { } /** * 驱动 */ publ ...
- HTTP 下载文件工具类
ResponseUtils.java package javax.utils; import java.io.ByteArrayInputStream; import java.io.File; im ...
- java下载文件工具类
java下载文件工具类 package com.skjd.util; import java.io.BufferedInputStream; import java.io.BufferedOutput ...
- Android开发之使用Handler封装下载图片工具类(源码分享)
假设每下载一张图片,就得重写一次Http协议,多线程的启动和handler的信息传递就显得太麻烦了,我们直接来封装一个工具类,便于我们以后在开发时随时能够调用. (1)在清单文件加入权限 <us ...
- Android开发常用工具类
来源于http://www.open-open.com/lib/view/open1416535785398.html 主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java. 目前 ...
- Android常用的工具类
主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java.目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils. Prefe ...
随机推荐
- 利用 Html 元标记控制搜索引擎蜘蛛
摘要:快照不被百度缓存: meta name = Baiduspider content = noarchive 所有搜索引擎,抓取这个页面.爬行链接.禁止快照: meta name = robots ...
- AngularJS中的控制器和作用域
欢迎大家指导与讨论 : ) 一. 作用域的事件传播 一 . 1 修改的传播 关于作用域最重要的一点是修改会通过事件传播下去,自动更新所以依赖的数据值,即使是通过行为产生的.简而言之,就是即时您只修 ...
- Html5的一些引擎使用感触
记得在2011年的时候,51CTO曾经采访我对H5的看法,因为当时Html5小组和雷友的关系,感觉是一片大火的形式,当时我的看法是:第一盈利模式不清晰,第二硬件跟不上,第三技术不成熟. 第一和第二点很 ...
- Logging的这点小事
真正做项目,才发觉Logging的好处和学问.自己胡搞的时候,常常使用System.out.println作为输出. 但实际的项目,尤其是library比较多的时候,好好配置好Logging,才能在后 ...
- linux的一些常用命令
这几天正好在研究linux系统,打算将下一个项目部署在linux系统的服务器上已提高安全性(被window 2003已经折磨的不行了),经过各方了解和深思熟虑后决定使用linux系统的CentOs版本 ...
- 漫谈 Java 实例化类
Java 中实例化类的动作,你是否还是一成不变 new 对应对象呢? 经手的项目多了,代码编写量自然会增加,渐渐的会对设计模式产生感觉. 怎样使书写出来的类实例化动作,高内聚,低耦合,又兼具一定的扩展 ...
- 从Hadoop Summit 2016看大数据行业与Hadoop的发展
前言: 好吧我承认已经有四年多没有更新博客了.... 在这四年中发生了很多事情,换了工作,换了工作的方向.在工作的第一年的时候接触机器学习,从那之后的一年非常狂热的学习机器学习的相关技术,也写了一些自 ...
- 新时代的coder如何成为专业程序员
在移动互联网"泛滥"的今天,越来越多非专业(这里的非专业指的是非计算机专业毕业的程序员)程序员加入到了IT行业中来了,可能是因为移动互联网的火爆导致程序员容易就业而且工资很高,可能 ...
- TCP/IP中最高大上的链路层简介(二)
引言 对于程序猿来讲,似乎越接近底层,就越显得高大上.这也算是程序猿们的共同认知吧,虽然不是所有人.今天LZ就和各位一起探讨一下TCP/IP中最高大上的一层,也就是最底层的链路层. 这一层LZ了解的还 ...
- Excel导入导出,通过datatable转存(篇一)
//导入数据 public ActionResult ExpressInfoImport() { var ptcp = new BaseResponse() { DoFlag = true, DoRe ...