android下载简单工具类

时间:2022-08-31 16:55:15

功能是实现下载文件,图片或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下载简单工具类的更多相关文章

  1. (转载)实例详解Android快速开发工具类总结

    实例详解Android快速开发工具类总结 作者:LiJinlun 字体:[增加 减小] 类型:转载 时间:2016-01-24我要评论 这篇文章主要介绍了实例详解Android快速开发工具类总结的相关 ...

  2. 一个使用命令行编译Android项目的工具类

    一个使用命令行编译Android项目的工具类 简单介绍 编译apk项目须要使用的几个工具,基本都在sdk中,它们各自是(Windows系统): 1.aapt.exe 资源打包工具 2.android. ...

  3. Android 软件管理工具类Utils

    Android 软件管理工具类Utils /** * Created by uilubo on 2015/9/30. * 工具类 */ public class Utils { public stat ...

  4. java基础之JDBC三:简单工具类的提取及应用

    简单工具类: public class JDBCSimpleUtils { /** * 私有构造方法 */ private JDBCSimpleUtils() { } /** * 驱动 */ publ ...

  5. HTTP 下载文件工具类

    ResponseUtils.java package javax.utils; import java.io.ByteArrayInputStream; import java.io.File; im ...

  6. java下载文件工具类

    java下载文件工具类 package com.skjd.util; import java.io.BufferedInputStream; import java.io.BufferedOutput ...

  7. Android开发之使用Handler封装下载图片工具类(源码分享)

    假设每下载一张图片,就得重写一次Http协议,多线程的启动和handler的信息传递就显得太麻烦了,我们直接来封装一个工具类,便于我们以后在开发时随时能够调用. (1)在清单文件加入权限 <us ...

  8. Android开发常用工具类

    来源于http://www.open-open.com/lib/view/open1416535785398.html 主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java. 目前 ...

  9. Android常用的工具类

    主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java.目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils. Prefe ...

随机推荐

  1. Android Studio AVD和SDK Manager灰色不能点击的问题。

    之前安装完Android Studio之后,迫不及待的打开,新建项目,发现模板新建之后里面没有文件,并且AVD Manager和SDK Manager 那一排的按钮灰色不能点. 之后查阅资料无果,最后 ...

  2. 【转载】LVS&plus;MYCAT&plus;读写分离&plus;MYSQL主备同步部署手册(邢锋)

    LVS+MYCAT+读写分离+MYSQL主备同步部署手册 1          配置MYSQL主备同步…. 2 1.1       测试环境… 2 1.2       配置主数据库… 2 1.2.1  ...

  3. WeQuant交易策略—Chaikin A&sol;D

    策略名称:AD指标策略 多空双方力量浮标- AD(Chaikin A/D线)策略关键词:ChaikinA/D线.多空对比.AD指标是一种非常流行的平横交易量指标, 用于估定一段时间内该证券累积的资金流 ...

  4. 个人玩耍VUE&period;&period;我的点点滴滴,今天很冷,2度&excl;&excl;&excl;

    谢谢博客园,可以记录我的点点滴滴.!!这个小案例的效果图 其中,这篇还是上一篇博客的序章,我们直接看下更新的代码. Cart.Vue <template> <div class=&q ...

  5. 《全栈性能Jmeter》-7JMeter常用脚本开发

  6. django权限管理(一)

    权限:权限就是一个包含正则的url. Rbac 权限管理: Role-Based Access Control,基于角色的访问控制.用户通过角色与权限进行关联,一个用户可以有多个角色,一个角色可以有多 ...

  7. BZOJ 3282&colon; Tree

    3282: Tree Time Limit: 30 Sec  Memory Limit: 512 MBSubmit: 1714  Solved: 765[Submit][Status][Discuss ...

  8. 在python3&period;x下使用如下代码: import cPickle as pk 报错

    在python3.x下使用如下代码: import cPickle as pk会报如下错误:ImportError: No module named 'cPickle' 原因:python2有cPic ...

  9. bzoj4501 旅行

    题面: 小C来到了F国,小C想好好地参观F国.F国可以看一个有n个点m条边的有向无环图,小C刚开始站在1号点.假设现在小C站在x号点: 1.点x没有出边,结束旅游. 2.点x有o条出边,小C等概率地选 ...

  10. BurpSuite系列&lpar;十一&rpar;----Project options模块&lpar;项目选择&rpar;

    一.简介 Project options主要用来对Project的一些设置. 二.模块说明 Project options主要由五个模块组成: 1.Connections 连接2.HTTP3.SSL4 ...