abstract class DownloadObserver(var url: String) : DisposableObserver() {    override fun onComplete() {}    override fun onNext(responseBody: ResponseBody) {        val fileName = url.substring(url.lastIndexOf("/"), url.length)        val dirPath = Environment.getExternalStorageDirectory().absolutePath + "/" + MyApp.mContext.packageName        val dirFile = File(dirPath)        if (!dirFile.exists() && !dirFile.isDirectory) {            dirFile.mkdirs()        }        val file = File("$dirPath/$fileName")        val inputStream = responseBody.byteStream()        val buffer = ByteArray(1024 * 4)        var fos: FileOutputStream? = null        var sum = 0        var len = 0        val off = 0        try {            fos = FileOutputStream(file)            while (inputStream.read(buffer).apply { len = this } > 0) {                fos.write(buffer, off, len)                sum += len            }            fos.flush()            fos.close()            success(file.absolutePath)        } catch (e: IOException) {            error("")            e.printStackTrace()        } finally {            try {                fos?.close()            } catch (e: IOException) {                e.printStackTrace()            }        }    }    override fun onError(e: Throwable) {        error("")    }    protected abstract fun success(path: String)    protected abstract fun error(msg: String)}

 

更多相关文章

  1. 代码中设置drawableleft
  2. android 3.0 隐藏 系统标题栏
  3. Android开发中activity切换动画的实现
  4. Android(安卓)学习 笔记_05. 文件下载
  5. Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
  6. 技术博客汇总
  7. android 2.3 wifi (一)
  8. AndRoid Notification的清空和修改
  9. Android中的Chronometer

随机推荐

  1. 获取Android设备唯一标识码以及其他信息
  2. Android基础知识复习之打开照相机拍照并
  3. AndroidUI学习
  4. android 生命周期研究资料
  5. 2011年Android人才奇缺30万
  6. Android之判断设备网络连接状态,并判断连
  7. 粗看 Android(安卓)4.0 界面变化
  8. Android性能优化-线程性能优化
  9. Android调试方法大全
  10. Android(安卓)Q 带来哪些变化