Android 清除本地缓存
阅读原文时间:2023年07月08日阅读:1

主要功能:清除内、外缓存,清除数据库,清除Sharepreference,清除files和清除自定义目录

public class DataCleanManager {

//清除本应用内部缓存(/data/data/com.xxx.xxx/cache)  
public static void cleanInternalCache(Context context) {  
    deleteFilesByDirectory(context.getCacheDir());  
}

//清除本应用所有数据库  
public static void cleanDatabases(Context context) {  
    deleteFilesByDirectory(new File("/data/data/" + context.getPackageName() + "/databases"));  
}

//清除Sharepreference(/data/data/com.xxx.xxx/shared\_prefs)  
public static void cleanSharedPreferenced(Context context){  
    deleteFilesByDirectory(new File("/data/data/" +context.getPackageName() +"/shared\_prefs"));  
}

//按名字清除本应用数据  
public static void cleanDatabaseByName(Context context,String dbName){  
    context.deleteDatabase(dbName);  
}

//清除/data/data/com.xxx.xxx.files下的内容  
public static void cleanFiles(Context context){  
    deleteFilesByDirectory(context.getFilesDir());  
}

//清除外部cache下的内容(/mnt/sdcard/android/data/com.xxx.xxx/cache)  
public static void cleanExterbalCache(Context context){  
    if (Environment.getExternalStorageState().equals(Environment.MEDIA\_MOUNTED)){  
        deleteFilesByDirectory(context.getExternalCacheDir());  
    }  
}

//清除自定义路径下的文件,使用需小心。并且只支持目录下的文件删除  
public static void cleanCustomCache(String filePath){  
    deleteFilesByDirectory(new File(filePath));  
}

//清除本应用所有数据  
public static void cleanApplicationData(Context context ,String... filepath){  
    cleanInternalCache(context);  
    cleanExterbalCache(context);  
    cleanDatabases(context);  
    cleanSharedPreferenced(context);  
    cleanFiles(context);  
    for (String filePath : filepath){  
        cleanCustomCache(filePath);  
    }  
}

//删除方法,这里只会删除某个文件夹下的文件,如果传入的directory是个文件,将不做处理  
private static void deleteFilesByDirectory(File directory) {  
    if (directory != null && directory.exists() && directory.isDirectory()) {  
        for (File item : directory.listFiles()) {  
            item.delete();  
        }  
    }  
}  

}