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 ...
随机推荐
- POJ 3714 Raid
Description After successive failures in the battles against the Union, the Empire retreated to its ...
- 设置word里的代码格式,使之有底纹的效果
目录 1 实现效果: 1 2 怎么才能在word里实现这样的显示? 1 如何设置word里的代码格式,使之有底纹的效果 2 实现效果: 怎么才能在word里实现这 ...
- git 找回丢失的commit
From : http://dmouse.iteye.com/blog/1797267 git 的错误操作,导致丢失了重要的commit,真是痛不欲生: 最后通过git神器终于找回了丢失的commit ...
- hadoop: hive 1.2.0 在mac机上的安装与配置
环境:mac OS X Yosemite + hadoop 2.6.0 + hive 1.2.0 + jdk 1.7.0_79 前提:hadoop必须先安装,且处于运行状态(伪分式模式或全分布模式均可 ...
- 多线程下HashMap的死循环问题
多线程下[HashMap]的问题: 1.多线程put操作后,get操作导致死循环.2.多线程put非NULL元素后,get操作得到NULL值.3.多线程put操作,导致元素丢失. 本次主要关注[Has ...
- Spire.Doc组件读取与写入Word
之前写了一篇开源组件DocX读写word的文章,当时时间比较匆忙选了这个组件,使用过程中还是有些不便,不能提前定义好模版,插入Form表单域进行替换.最近无意中发现Spire.Doc组件功能很强大,目 ...
- WP8.1中C++的winodws运行时组件位移操作的差异
最近学习WP8.1应用开发,想把C语言的SM3国密算法移植到手机app中.由于把C语言的代码转换成C#代码工作量较大,因此只能用winodws运行时组件来实现. SM3国密算法是一种HASH算法,具体 ...
- 让 HTML5 来为你定位
Geolocation HTML5 的 geolocation 是一个令人兴奋的 API,通过这套 API,Javascript 代码就能够访问到用户的当前位置.当然,访问之前必须得到用户的明确认可, ...
- node 学习笔记 - Modules 模块加载系统 (2)
本文同步自我的个人博客:http://www.52cik.com/2015/12/14/learn-node-modules-module.html 上一篇讲了模块是如何被寻找到然后加载进来的,这篇则 ...
- js的this什么时候会出现报错
var aa ={ name:"boy", age:, like: function(){ console.log(this.name); } } //aa.like();//这样 ...