Android清除本地数据

来源:互联网 发布:linux ftp无法访问 编辑:程序博客网 时间:2024/06/09 16:03

1.清除手机应用缓存、外部缓存、数据库、File、sharedPreference和自定义文件夹下的目录(转自http://www.cnblogs.com/rayray/p/3413673.html)

public class DataCleanUtil {/** * 清除所有缓存(内部和外部缓存) *  * @param context */public static void cleanAllCache(Context context) {cleanInternalCache(context);cleanExternalCache(context);}/** * * 清除本应用内部缓存(/data/data/com.xxx.xxx/cache) *  * @param context */public static void cleanInternalCache(Context context) {deleteFilesByDirectory(context.getCacheDir());}/** * * 清除外部cache下的内容(/mnt/sdcard/android/data/com.xxx.xxx/cache) * * @param * context */public static void cleanExternalCache(Context context) {if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {deleteFilesByDirectory(context.getExternalCacheDir());}}/** * * 删除方法 这里只会删除某个文件夹下的文件,如果传入的directory是个文件,将不做处理 *  * @param directory */private static boolean deleteFilesByDirectory(File dir) {if (dir != null && dir.isDirectory()) {String[] children = dir.list();for (int i = 0; i < children.length; i++) {boolean success = deleteFilesByDirectory(new File(dir,children[i]));if (!success) {return false;}}}return dir.delete();}/** * 缓存总大小(包括内部和外部缓存) *  * @param context * @return * @throws Exception */public static String getTotalCacheSize(Context context) throws Exception {long cacheSize = getFolderSize(context.getCacheDir());if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {cacheSize += getFolderSize(context.getExternalCacheDir());}return getFormatSize(cacheSize);}/** * 获取文件 Context.getExternalFilesDir() --> SDCard/Android/data/你的应用的包名/files/ * 目录,一般放一些长时间保存的数据,一般存放临时缓存数据 */public static long getFolderSize(File file) throws Exception {long size = 0;try {File[] fileList = file.listFiles();for (int i = 0; i < fileList.length; i++) {// 如果下面还有文件if (fileList[i].isDirectory()) {size = size + getFolderSize(fileList[i]);} else {size = size + fileList[i].length();}}} catch (Exception e) {e.printStackTrace();}return size;}/** * 格式化单位 *  * @param size * @return */public static String getFormatSize(double size) {double kiloByte = size / 1024;if (kiloByte < 1) {// return size + "Byte";return "0K";}double megaByte = kiloByte / 1024;if (megaByte < 1) {BigDecimal result1 = new BigDecimal(Double.toString(kiloByte));return result1.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "KB";}double gigaByte = megaByte / 1024;if (gigaByte < 1) {BigDecimal result2 = new BigDecimal(Double.toString(megaByte));return result2.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "MB";}double teraBytes = gigaByte / 1024;if (teraBytes < 1) {BigDecimal result3 = new BigDecimal(Double.toString(gigaByte));return result3.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "GB";}BigDecimal result4 = new BigDecimal(teraBytes);return result4.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString()+ "TB";}/** * 清除本应用所有数据库(/data/data/com.xxx.xxx/databases) * * @param context */public static void cleanDatabases(Context context) {deleteFilesByDirectory(new File("/data/data/"+ context.getPackageName() + "/databases"));}/** * * 清除本应用SharedPreference(/data/data/com.xxx.xxx/shared_prefs) * * @param * context */public static void cleanSharedPreference(Context context) {deleteFilesByDirectory(new File("/data/data/"+ context.getPackageName() + "/shared_prefs"));}/** * 按名字清除本应用数据库 * * @param context * @param dbName */public static void cleanDatabaseByName(Context context, String dbName) {context.deleteDatabase(dbName);}/** * 清除自定义路径下的文件,使用需小心,请不要误删。而且只支持目录下的文件删除 * * @param filePath */public static void cleanCustomCache(String filePath) {deleteFilesByDirectory(new File(filePath));}}


0 0
原创粉丝点击