123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- package com.edufound.reader.util;
- import java.io.File;
- import android.content.Context;
- import android.os.Environment;
- /**
- * 本应用数据清除管理器
- */
- public class DataCleanManager {
- /**
- * 清除本应用内部缓存(/data/data/com.xxx.xxx/cache)
- *
- * @param context
- */
- public static void cleanInternalCache(Context context) {
- deleteFilesByDirectory(context.getCacheDir());
- }
- /**
- * 清除本应用所有数据库(/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);
- }
- /**
- * 清除/data/data/com.xxx.xxx/files下的内容
- *
- * @param context
- */
- public static void cleanFiles(Context context) {
- deleteFilesByDirectory(context.getFilesDir());
- }
- /**
- * 清除外部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());
- }
- }
- /**
- * 清除自定义路径下的文件,使用需小心,请不要误删。而且只支持目录下的文件删除
- *
- * @param filePath
- */
- public static void cleanCustomCache(String filePath) {
- deleteFilesByDirectory(new File(filePath));
- }
- /**
- * 清除本应用所有的数据
- *
- * @param context
- * @param filepath
- */
- public static void cleanApplicationData(Context context, String... filepath) {
- cleanInternalCache(context);
- cleanExternalCache(context);
- cleanDatabases(context);
- cleanSharedPreference(context);
- cleanFiles(context);
- for (String filePath : filepath) {
- cleanCustomCache(filePath);
- }
- }
- /**
- * 删除方法 这里只会删除某个文件夹下的文件,如果传入的directory是个文件,将不做处理
- *
- * @param directory
- */
- private static void deleteFilesByDirectory(File directory) {
- if (directory != null && directory.exists() && directory.isDirectory()) {
- for (File item : directory.listFiles()) {
- item.delete();
- }
- }
- }
- /**
- * 删除文件夹下指定时间以前的所有文件
- *
- * @param folderPath 文件夹路径
- * @param msec 指定时间(毫秒),传 <=0 表示删除所有的文件
- */
- public static void delFileBeforeTime(String folderPath, long msec) {
- File folder = new File(folderPath);
- if (folder.exists() && folder.isDirectory()) {
- File[] files = folder.listFiles();
- if (files != null && files.length > 0) {
- for (File file : files) {
- if (file.isFile() && (msec <= 0 || file.lastModified() < msec)) {
- file.delete();
- // Logger.e("delete file :" + file.getAbsolutePath());
- } else if (file.isDirectory()) {
- delFileBeforeTime(file.getAbsolutePath(), msec);
- //这里如果文件夹已经为空,直接删除文件夹
- File[] folderFiles = file.listFiles();
- if (folderFiles == null || folderFiles.length == 0) {
- file.delete();
- // Logger.e("delete folder :" + file.getAbsolutePath());
- }
- }
- }
- }
- }
- }
- }
|