package licola.demo.com.huabandemo.Util; import android.os.Environment; import android.support.annotation.NonNull; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import okhttp3.ResponseBody; /** * Created by LiCola on 2016/05/16 17:10 * 文件工具类 */ public class FileUtils { private static final String DefaultDirsFileName="huabanDownoad"; @NonNull public static File getDirsFile(){ return getDirsFile(DefaultDirsFileName); } @NonNull public static File getDirsFile(String dirsFileName) { File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), dirsFileName); if (!file.exists()) { file.mkdir(); } return file; } public static File writeResponseBodyToDisk(File file, ResponseBody body, String name) { try { // todo change the file location/name according to your needs File futureStudioIconFile = new File(file.getPath(), name); // Logger.d("isExternalStorageWritable=" + Utils.isExternalStorageWritable()); InputStream inputStream = null; OutputStream outputStream = null; try { byte[] fileReader = new byte[4096]; long fileSize = body.contentLength(); long fileSizeDownloaded = 0; inputStream = body.byteStream(); outputStream = new FileOutputStream(futureStudioIconFile); while (true) { int read = inputStream.read(fileReader); if (read == -1) { break; } outputStream.write(fileReader, 0, read); fileSizeDownloaded += read; if (fileSizeDownloaded == 0) { Logger.d("file download: " + fileSizeDownloaded + " of " + fileSize); } if (fileSizeDownloaded == fileSize) { Logger.d("file download: " + fileSizeDownloaded + " of " + fileSize); } } outputStream.flush(); //所有流程操作完成 返回true return futureStudioIconFile; } catch (IOException e) { //捕捉到写入异常 返回false return null; } finally { //finally修饰的代码块 一定执行 关闭流 if (inputStream != null) { inputStream.close(); } if (outputStream != null) { outputStream.close(); } } } catch (IOException e) { //捕捉到 文件的异常 返回false return null; } } }