Android(安卓)Retrofit下载文件
16lz
2021-12-04
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)}
更多相关文章
- 代码中设置drawableleft
- android 3.0 隐藏 系统标题栏
- Android开发中activity切换动画的实现
- Android(安卓)学习 笔记_05. 文件下载
- Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
- 技术博客汇总
- android 2.3 wifi (一)
- AndRoid Notification的清空和修改
- Android中的Chronometer