Android 清除应用缓存

      Android 开发过程中会遇到对特定的文件路径下的文件进行删除,已达到清除缓存的目的。废话不多说,直接上代码了!


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);
		
	}
	
	/**
	 * 清除getFilesDir()下的内容;
	 * 对应路径
	 * (/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 fileName
	 */
	public static void cleanCustomCache(String fileName){
		
		deleteFilesByDirectory(new File(fileName));
		
	}
	
	/**
	 * 清除本应用所有数据
	 * 
	 * @param context
	 * @param filePath
	 */
	public static void cleanApplication(Context context,String...filePath){
		
		cleanInternalCache(context);
		cleanExternalCache(context);
		cleanDatabases(context);
		cleanFiles(context);
		cleanSharedPreference(context);
		
		for(String filepath:filePath){
			
			cleanCustomCache(filepath);
			
		}
		
		
		
	}
	
	
	
	
	/**
	 * 删除方法,这里只会删除某个文件夹下的文件,如果传入的directory是个文件,则不做处理。
	 * File.isDirectory 返回true则表示路径是个目录文件夹.
	 * @param directory
	 */
	
	
	private static void deleteFilesByDirectory(File directory){
		
		
		if(directory!=null && directory.exists() && directory.isDirectory()){
			
			for(File item:directory.listFiles()){
				
				
				item.delete();
				
				
			}
			
		}
		
	}
	
	
	
}<span style="color:#ff0000;">
</span>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值