Android清除本地數據緩存代碼

jopen 9年前發布 | 1K 次閱讀 Java Android

/**

  • 文 件 名: DataCleanManager.java
  • 描 述: 主要功能有清除內/外緩存,清除數據庫,清除sharedPreference,清除files和清除自定義目錄
    */

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();
        }
    }
}

}</pre> 來自:http://blog.csdn.net/catoop/article/details/50318983

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!