美文网首页
Android 缓存工具类

Android 缓存工具类

作者: 禄眠 | 来源:发表于2019-12-11 14:39 被阅读0次

介绍

今天用到了缓存,需要清除缓存,所以就封装了一个缓存工具类,便于日后使用

功能

主要功能包括:获取缓存大小以及清除缓存
代码如下:

package com.wzl.reversalchallenge.utils

import android.content.Context
import android.os.Environment
import java.io.File

public class CacheUtil {

    companion object {

        // 获取外部缓存大小
        public fun getExternalCacheSize(context: Context?): String {

            return if (Environment.getExternalStorageState() == Environment.MEDIA_MOUNTED) {
                formatSize(getFolderSize(context!!.externalCacheDir))
            } else {
                "0 B"
            }
        }

        // 获取全部缓存大小
        public fun getCacheSize(context: Context?): String {

            var totalSize: Long = getFolderSize(context!!.cacheDir)
            if (Environment.getExternalStorageState() == Environment.MEDIA_MOUNTED) {
                totalSize += getFolderSize(context.externalCacheDir)
            }
            return formatSize(totalSize)
        }

        // 获取文件夹大小
        private fun getFolderSize(folder: File?): Long {

            var size: Long = 0
            val files: Array<File>? = folder!!.listFiles()
            for (file in files!!) {
                size += if (file.isDirectory) {
                    getFolderSize(file)
                } else {
                    file.length()
                }
            }
            return size
        }

        // 清除外部缓存
        public fun clearExternalCache(context: Context?) {
            if (Environment.getExternalStorageState() == Environment.MEDIA_MOUNTED) {
                deleteFolder(context!!.externalCacheDir)
            }
        }

        // 清除全部缓存
        public fun clearAllCache(context: Context?) {
            deleteFolder(context!!.cacheDir)
            if (Environment.getExternalStorageState() == Environment.MEDIA_MOUNTED) {
                deleteFolder(context.externalCacheDir)
            }
        }

        // 删除文件夹
        private fun deleteFolder(folder: File?) : Boolean {

            if (folder != null && folder.isDirectory) {
                val files: Array<String>? = folder.list()
                for (file in files!!) {
                    if (!deleteFolder(File(folder, file))) {
                        return false
                    }
                }
                return folder.delete()
            }
            if (folder != null) {
                return folder.delete()
            } else {
                return false
            }
        }

        // 格式化缓存大小单位
        private fun formatSize(size: Long): String {

            val b = size
            val kb = b / 1024
            if (kb < 1) {
                return "$b B"
            }
            val mb = kb / 1024
            if (mb < 1) {
                return "$kb KB"
            }
            val gb = mb / 1024
            if (gb < 1) {
                return "$mb MB"
            }
            val tb = gb / 1024
            if (tb < 1) {
                return "$gb GB"
            } else {
                return "0"
            }
        }
    }
}

如有错误望指正

相关文章

  • Android 缓存工具类

    介绍 今天用到了缓存,需要清除缓存,所以就封装了一个缓存工具类,便于日后使用 功能 主要功能包括:获取缓存大小以及...

  • LruCache 实现原理

    LruCache 是Android 提供的一个缓存工具类,LRU(Least Recently Used)...

  • 安卓 - 源码 - LruCache

    LruCache是android提供的一个缓存工具类。在很多教程上,说到对Bitmap的缓存处理,都会使用这个类。...

  • Android中的缓存以及缓存清理

    缓存工具类 缓存目录的处理 清理缓存 获取缓存的大小 1. 缓存工具类 GitHub地址: https://gi...

  • 简书中Android优秀文章收藏

    Util相关 Android开发人员不得不收集的代码(持续更新中) 说明:Android一些工具类方法(时间、缓存...

  • thinkphp 缓存管理类

    一个基于thinkphp,redis的缓存工具管理类 对应的数据表 缓存设置类 数据表模型 缓存工具类 使用案例

  • 常用工具类

    BaseApp ToastUtil(Toast 工具类) MyAppGlideModule(自动缓存图片的工具类,...

  • 常用的工具类

    BaseApp ToastUtil(Toast 工具类) MyAppGlideModule(自动缓存图片的工具类,...

  • 缓存工具类

    安卓开发一般都需要进行数据缓存,常用操作老司机已为你封装完毕,经常有小伙伴问怎么判断缓存是否可用,那我告诉你,你可...

  • Java 缓存优化2 - 实现简单的内存缓存

    不使用淘汰策略的map的缓存实现方式 工具类 测试类 运行结果 使用FIFO淘汰策略的map的缓存实现方式 工具类...

网友评论

      本文标题:Android 缓存工具类

      本文链接:https://www.haomeiwen.com/subject/ejiogctx.html