DownloadUtil-下载工具类
一、DownloadUtil实现的功能
- 从给定的url上接受图片数据
- 保存图片数据到本地
二、具体步骤
1.初始化路径;(这里选择自己所需要的路径即可); private static final String FILE_PATH = Environment.getExternalStorageDirectory() + File.separator+... 2.初始化一个网络请求 request 、一个异步发送网络请求 call、一个写磁盘的子线程mThread、一个文件 file; DownloadRequest request; Call<ResponseBody> call; File file; Thread thread; 3.根据路径创建文件,需要判断该文件是否已经存在,不存在则创建,存在则返回文件 File file =new File(FILE_PATH); 4.根据url创建请求,方式与retrofit相同,在resonse中开启子线程用于写磁盘操作 public void onResponse(Call<ResponseBody> call, final Response<ResponseBody> response) { Thread = new Thread() { @Override public void run() { super.run(); //写磁盘 writeFileDisk(response, File); } }; thread.start(); } 5.开始写磁盘,初始化写入长度,总长度,输入流,输出流 currentLen = 0 OutputStream output = new FileOutputStream(file); InputStream input = response.body().byteStream(); totalLength = response.body().contentLength() //开始写;需要try--catch操作 try{ byte[] buff = new byte[1024] int len; //先从输入流读到缓存区,再从缓存区读到写出文件中 while((len != input.read(buff)!= -1)){ output.write(buff,0,len) currentLen += len;//表示当前进度 }finally{ if(output != null){ try{ output.close(); } if(input != null){ try{ input.close(); } } }