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 ...
随机推荐
- [转]WampServer localhost 图标不显示解决办法
FROM : http://blog.warmcolor.net/2011/11/03/wampserver-localhost-%E5%9B%BE%E6%A0%87%E4%B8%8D%E6%98%B ...
- es6+react环境搭建
工具说明 Node Koa React Webpack 项目结构 - build 客户端代码的构建文件目录 - config 项目的配置文件 - docs 项目相关的文档目录 - lib 服务端库文件 ...
- 漫谈 Java 实例化类
Java 中实例化类的动作,你是否还是一成不变 new 对应对象呢? 经手的项目多了,代码编写量自然会增加,渐渐的会对设计模式产生感觉. 怎样使书写出来的类实例化动作,高内聚,低耦合,又兼具一定的扩展 ...
- TextBox自定义控件
首先来一发图: 今天主要说的textBox内部给予提示: 使用自定义控件方式:TextBoxTip继承TextBox 利用TextBox的背景画刷功能 VisualBrush是一种比较特殊的笔刷,它的 ...
- <实训|第十天>从底层解释一下U盘内存为什么变小的原因附数据恢复的基本原理
[root@localhost~]#序言 我们平时不论是买一个U盘硬盘,或者自己在电脑上创建一个分区,大小总是比我们创建的要小一点,有些人会说,这个正常啊,是因为厂家规定的1M=1000k,真正的是1 ...
- 十分钟掌握Activity的生命周期与启动模式
1. Activity的生命周期 正常情况下的Activity生命周期如下图所示(来自Android Developer): 当资源相关的系统配置变更时(比如设备屏幕方向改变,键盘可见性变化),会导致 ...
- React Native 在现有项目中的探路
移动开发中,native开发性能和效果上无疑是最好的. 但是在众多的情况下,native开发并不是最优的选择.当需求经常改动的时候,当预算有限的时候,当deadline很近的时候,native开发的成 ...
- nios II--实验3——led 100M软件部分
软件开发 参照实验二(led),该实验与实验二(led)的不同之处在于系统的时钟由50M提成为100M.运行结果,在调试窗口输出Hello from Nios II!,并且板上的四个LED灯流动显示, ...
- java中的注解
注解为程序提供信息,但不是程序本身的组成部分.注解有以下用途: * 为编译器提供信息,相当于C语言中的预编译指令 * 部署时处理,软件工具可以根据注解来生成代码,XML文件等,例如编写servlet, ...
- 在eclipse中使用第三方库总结
一.建立user library 导入第三方jar文件,最简单的方式是:右键工程/属性/java build path/add external jars. 另一种方式是:window/prefren ...