Android 文件下载工具类
下面为下载的工具类:
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 文件下载工具类相关推荐
- android sharedpreferences工具类
今天,简单讲讲如何写一个sharedpreferences的工具类. 很简单,把一些重复的操作封装在工具类里,其他地方调用就可以.在网上搜索了比较多的资料,找到一个比较好的工具类. 参考文章:http ...
- android sharedpreferences 工具类,android sharedpreferences工具类
释放双眼,带上耳机,听听看~! 今天,简单讲讲如何写一个sharedpreferences的工具类. 很简单,把一些重复的操作封装在工具类里,其他地方调用就可以.在网上搜索了比较多的资料,找到一个比较 ...
- java downloadfile_FileDownload.java:文件下载工具类
FileDownload.java:文件下载工具类 2017-04-25·Mr.Xia 4489 次浏览 文件下载功能的工具类 JavaWeb工具类目录 [http://baike.xsoftlab. ...
- Android开发工具类 Utils
包括了各种工具类.辅助类.管理类等 Awesome_API: https://github.com/marktony/Awesome_API/blob/master/Chinese.md 收集中国国内 ...
- Android开发工具类
包括了各种工具类.辅助类.管理类等 Awesome_API: https://github.com/marktony/Awesome_API/blob/master/Chinese.md 收集中国国内 ...
- Java文件下载工具类
各种文件下载 /** 文件下载工具类 */public void downloadFile(HttpServletResponse response,String url)throws Unsuppo ...
- Android基于Okhttp3的文件下载工具类
需求中有需要简易的下载文件的,例如图片,音频,视频等.首先这个下载工具类没有断点下载,也就是说没有暂停,缓存.不过解决日常工作中的小文件下载是绰绰有余的.下面可以看一看 一.添加okhttp3的远程依 ...
- Android 常见工具类封装
1,MD5工具类: public class MD5Util {public final static String MD5(String s) {char hexDigits[] = { '0', ...
- Android 系统工具类SystemUtils
包含的功能有: 获取系统中所有APP应用.获取用户安装的APP应用.根据包名和Activity启动类查询应用信息.跳转到WIFI设置.WIFI网络开关.移动网络开关.GPS开关 当前若关则打开 当前若 ...
最新文章
- boost::mpl::negate相关的测试程序
- 巧用Java8中的Stream,让集合操作6到飞起!!!
- LeetCode 2115. 从给定原材料中找到所有可以做出的菜(拓扑排序)
- 解决spring和struts配合问题
- PHP常见缓存技术分析(cache)
- input只改变光标的颜色 不改变字的颜色
- linux上容器端口映射,MacOS下的docker端口映射
- display:none的进一步理解
- mac苹果电脑如何查看mac地址
- 汉王考勤管理系统使用教程
- springboot整合腾讯云短信服务
- BeyondCompare4.0比较代码内容相同但显示红色问题终结方案
- 取消Excel里面全部超级链接
- IE 无法正常打开,刚启动就关闭
- Linux(Ubuntu)入门——2.Linux基础命令
- 推荐算法(一)--基本介绍
- Java如何配置环境变量?
- 独家免费资源:《成长的烦恼》全7季在线高清无水印播放!
- 涂鸦智能CFO刘尧:谁说高速发展的创新型企业就不能用SAP?
- 专题10:如何应对面试官的拷问—你了解python的装饰器吗?