下面为下载的工具类:

public class DownloadUtil {public static final int DOWNLOAD_FAIL=0;public static final int DOWNLOAD_PROGRESS=1;public static final int DOWNLOAD_SUCCESS=2;private static DownloadUtil downloadUtil;private final OkHttpClient okHttpClient;public static DownloadUtil getInstance() {if (downloadUtil == null) {downloadUtil = new DownloadUtil();}return downloadUtil;}private DownloadUtil() {okHttpClient = new OkHttpClient();}/****/public void download(final String url,final String saveDir,final OnDownloadListener listener){this.listener=listener;Request request=new Request.Builder().url(url).build();okHttpClient.newCall(request).enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {Message message=Message.obtain();message.what=DOWNLOAD_FAIL;mHandler.sendMessage(message);}@Overridepublic void onResponse(Call call, Response response) throws IOException {InputStream is=null;byte[] buf=new byte[2048];int len=0;FileOutputStream fos=null;//储存下载文件的目录String savePath=isExistDir(saveDir);try{is=response.body().byteStream();long total=response.body().contentLength();File file=new File(savePath,getNameFromUrl(url + ".mp4"));//url为文件名,.mp4为文件类型,需要什么文件名和文件类型可直接改变。fos=new FileOutputStream(file);long sum=0;while((len = is.read(buf))!=-1){fos.write(buf,0,len);sum+=len;int progress=(int)(sum*1.0f/total*100);//下载中Message message=Message.obtain();message.what=DOWNLOAD_PROGRESS;message.obj=progress;mHandler.sendMessage(message);}fos.flush();//下载完成Message message=Message.obtain();message.what=DOWNLOAD_SUCCESS;message.obj=file.getAbsolutePath();mHandler.sendMessage(message);}catch (Exception e){Log.e("下载异常",e.getMessage);}finally{try{if(is!=null)is.close();}catch (IOException e){}try {if(fos!=null){fos.close();}}catch (IOException e){}}}});}private String getNameFromUrl(String url) {return url.substring(url.lastIndexOf("/")+1);}private String isExistDir(String saveDir) throws IOException {File downloadFile=new File(saveDir);if(!downloadFile.mkdirs()){downloadFile.createNewFile();}String savePath=downloadFile.getAbsolutePath();return savePath;}private Handler mHandler=new Handler(){@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what){case DOWNLOAD_PROGRESS:listener.onDownloading((Integer) msg.obj);break;case DOWNLOAD_FAIL:listener.onDownloadFailed();break;case DOWNLOAD_SUCCESS:listener.onDownloadSuccess((String) msg.obj);break;}}};OnDownloadListener listener;public interface OnDownloadListener{/*** 下载成功*/void onDownloadSuccess(String path);/*** 下载进度* @param progress*/void onDownloading(int progress);/*** 下载失败*/void onDownloadFailed();}
}

下面为调用:

DownloadUtil.getInstance().download(url,String.valueOf(fileUp), new DownloadUtil.OnDownloadListener() {@Overridepublic void onDownloadSuccess(String path) {Log.i("视频下载","成功");}@Overridepublic void onDownloading(int progress) {}@Overridepublic void onDownloadFailed() {Log.d("视频下载","失败");}});

忘了是哪里看的了,某个老哥写的,因为感觉很好用,所以就自己写下来,以便以后再用。

Android 文件下载工具类相关推荐

  1. android sharedpreferences工具类

    今天,简单讲讲如何写一个sharedpreferences的工具类. 很简单,把一些重复的操作封装在工具类里,其他地方调用就可以.在网上搜索了比较多的资料,找到一个比较好的工具类. 参考文章:http ...

  2. android sharedpreferences 工具类,android sharedpreferences工具类

    释放双眼,带上耳机,听听看~! 今天,简单讲讲如何写一个sharedpreferences的工具类. 很简单,把一些重复的操作封装在工具类里,其他地方调用就可以.在网上搜索了比较多的资料,找到一个比较 ...

  3. java downloadfile_FileDownload.java:文件下载工具类

    FileDownload.java:文件下载工具类 2017-04-25·Mr.Xia 4489 次浏览 文件下载功能的工具类 JavaWeb工具类目录 [http://baike.xsoftlab. ...

  4. Android开发工具类 Utils

    包括了各种工具类.辅助类.管理类等 Awesome_API: https://github.com/marktony/Awesome_API/blob/master/Chinese.md 收集中国国内 ...

  5. Android开发工具类

    包括了各种工具类.辅助类.管理类等 Awesome_API: https://github.com/marktony/Awesome_API/blob/master/Chinese.md 收集中国国内 ...

  6. Java文件下载工具类

    各种文件下载 /** 文件下载工具类 */public void downloadFile(HttpServletResponse response,String url)throws Unsuppo ...

  7. Android基于Okhttp3的文件下载工具类

    需求中有需要简易的下载文件的,例如图片,音频,视频等.首先这个下载工具类没有断点下载,也就是说没有暂停,缓存.不过解决日常工作中的小文件下载是绰绰有余的.下面可以看一看 一.添加okhttp3的远程依 ...

  8. Android 常见工具类封装

    1,MD5工具类: public class MD5Util {public final static String MD5(String s) {char hexDigits[] = { '0', ...

  9. Android 系统工具类SystemUtils

    包含的功能有: 获取系统中所有APP应用.获取用户安装的APP应用.根据包名和Activity启动类查询应用信息.跳转到WIFI设置.WIFI网络开关.移动网络开关.GPS开关 当前若关则打开 当前若 ...

最新文章

  1. boost::mpl::negate相关的测试程序
  2. 巧用Java8中的Stream,让集合操作6到飞起!!!
  3. LeetCode 2115. 从给定原材料中找到所有可以做出的菜(拓扑排序)
  4. 解决spring和struts配合问题
  5. PHP常见缓存技术分析(cache)
  6. input只改变光标的颜色 不改变字的颜色
  7. linux上容器端口映射,MacOS下的docker端口映射
  8. display:none的进一步理解
  9. mac苹果电脑如何查看mac地址
  10. 汉王考勤管理系统使用教程
  11. springboot整合腾讯云短信服务
  12. BeyondCompare4.0比较代码内容相同但显示红色问题终结方案
  13. 取消Excel里面全部超级链接
  14. IE 无法正常打开,刚启动就关闭
  15. Linux(Ubuntu)入门——2.Linux基础命令
  16. 推荐算法(一)--基本介绍
  17. Java如何配置环境变量?
  18. 独家免费资源:《成长的烦恼》全7季在线高清无水印播放!
  19. 涂鸦智能CFO刘尧:谁说高速发展的创新型企业就不能用SAP?
  20. 专题10:如何应对面试官的拷问—你了解python的装饰器吗?

热门文章

  1. 实现一个可管理、增发、兑换、冻结等高级功能的代币 1
  2. 积分与通证有什么区别?什么是TZC积分通证?
  3. gridfs文件服务器,OWA实现Word在线编辑(以GridFs存储文件)
  4. 调用第三方接口开据发票
  5. Dinky0.7.0源码初探
  6. 在线订票是哪种计算机应用,铁路联网售票系统按计算机应用的分类它属于
  7. PIcGo+Typora+Gitee
  8. 查看IC中文文档的网站
  9. mysql 5.1支持事务吗_MySQL的事务和隔离级别 | 旺旺知识库
  10. top命令的常用方式