Android 缓存工具类
2019-12-11 本文已影响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"
}
}
}
}
如有错误望指正