• 清除缓存


    public class DataCleanManager {
        /**
         17.     * * 清除本应用内部缓存(/data/data/com.xxx.xxx/cache) * *
         18.     *
         19.     * @param context
         20.     */
        public static void cleanInternalCache(Context context) {
            deleteFilesByDirectory(context.getCacheDir());
        }
    
        /**
         26.     * * 清除本应用所有数据库(/data/data/com.xxx.xxx/databases) * *
         27.     *
         28.     * @param context
         29.     */
        public static void cleanDatabases(Context context) {
            deleteFilesByDirectory(new File("/data/data/"
                    + context.getPackageName() + "/databases"));
        }
    
        /**
         36.     * * 清除本应用SharedPreference(/data/data/com.xxx.xxx/shared_prefs) *
         37.     *
         38.     * @param context
         39.     */
        public static void cleanSharedPreference(Context context) {
            deleteFilesByDirectory(new File("/data/data/"
                    + context.getPackageName() + "/shared_prefs"));
        }
    
        /**
         46.     * * 按名字清除本应用数据库 * *
         47.     *
         48.     * @param context
         49.     * @param dbName
         50.     */
        public static void cleanDatabaseByName(Context context, String dbName) {
            context.deleteDatabase(dbName);
        }
    
        /**
         56.     * * 清除/data/data/com.xxx.xxx/files下的内容 * *
         57.     *
         58.     * @param context
         59.     */
        public static void cleanFiles(Context context) {
            deleteFilesByDirectory(context.getFilesDir());
        }
    
        /**
         65.     * * 清除外部cache下的内容(/mnt/sdcard/android/data/com.xxx.xxx/cache)
         66.     *
         67.     * @param context
         68.     */
        public static void cleanExternalCache(Context context) {
            if (Environment.getExternalStorageState().equals(
                    Environment.MEDIA_MOUNTED)) {
                deleteFilesByDirectory(context.getExternalCacheDir());
            }
        }
        /**
         76.     * * 清除自定义路径下的文件,使用需小心,请不要误删。而且只支持目录下的文件删除 * *
         77.     *
         78.     * @param filePath
         79.     * */
        public static void cleanCustomCache(String filePath) {
            deleteFilesByDirectory(new File(filePath));
        }
    
        /**
         85.     * * 清除本应用所有的数据 * *
         86.     *
         87.     * @param context
         88.     * @param filepath
         89.     */
        public static void cleanApplicationData(Context context, String... filepath) {
            cleanInternalCache(context);
            cleanExternalCache(context);
            cleanDatabases(context);
            cleanSharedPreference(context);
            cleanFiles(context);
            if (filepath == null) {
                return;
            }
            for (String filePath : filepath) {
                cleanCustomCache(filePath);
            }
        }
    
        /**
         105.     * * 删除方法 这里只会删除某个文件夹下的文件,如果传入的directory是个文件,将不做处理 * *
         106.     *
         107.     * @param directory
         108.     */
        private static void deleteFilesByDirectory(File directory) {
            if (directory != null && directory.exists() && directory.isDirectory()) {
                for (File item : directory.listFiles()) {
                    item.delete();
                }
            }
        }
    
        // 获取文件
        //Context.getExternalFilesDir() --> SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据
        //Context.getExternalCacheDir() --> SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据
        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;
        }
    
        /**
         139.     * 删除指定目录下文件及目录
         140.     *
         141.     * @param deleteThisPath
         142.     * @param filepath
         143.     * @return
         144.     */
        public static void deleteFolderFile(String filePath, boolean deleteThisPath) {
            if (!TextUtils.isEmpty(filePath)) {
                try {
                    File file = new File(filePath);
                    if (file.isDirectory()) {// 如果下面还有文件
                        File files[] = file.listFiles();
                        for (int i = 0; i < files.length; i++) {
                            deleteFolderFile(files[i].getAbsolutePath(), true);
                        }
                    }
                    if (deleteThisPath) {
                        if (!file.isDirectory()) {// 如果是文件,删除
                            file.delete();
                        } else {// 目录
                            if (file.listFiles().length == 0) {// 目录下没有文件或者目录,删除
                                file.delete();
                            }
                        }
                    }
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    
    
    
    
    //计算大小
    
    
        public static String getFormatSize(double size) {
            double kiloByte = size / 1024;
            if (kiloByte < 1) {
                return size + "Byte";
            }
    
            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";
        }
    
    
        public static String getCacheSize(File file) throws Exception {
            return getFormatSize(getFolderSize(file));
        }
    
    }

    MainActivity

    上面查找控件 自己敲
    下面方法
    filesDir = MainActivity.this.getFilesDir();
            try {
                String cacheSize = DataCleanManager.getCacheSize(filesDir);
                textView.setText(cacheSize);
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            btndelete.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
    
                    DataCleanManager.cleanApplicationData(MainActivity.this,filesDir.getAbsolutePath());
                    try {
                        String cacheSize = DataCleanManager.getCacheSize(filesDir);
                        textView.setText(cacheSize);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
    
                }
            });
    
        }}

    xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:orientation="vertical"
        xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
        android:layout_height="match_parent" tools:context="com.bwie.lianxi34.MainActivity">
        <Button
    
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/bt"
            />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tv2"
            />
    </LinearLayout>
  • 相关阅读:
    Junit单元测试
    win7的6个网络命令
    WOJ1024 (POJ1985+POJ2631) Exploration 树/BFS
    WOJ1022 Competition of Programming 贪心 WOJ1023 Division dp
    woj1019 Curriculum Schedule 输入输出 woj1020 Adjacent Difference 排序
    woj1018(HDU4384)KING KONG 循环群
    woj1016 cherry blossom woj1017 Billiard ball 几何
    woj1013 Barcelet 字符串 woj1014 Doraemon's Flashlight 几何
    woj1012 Thingk and Count DP好题
    woj1010 alternate sum 数学 woj1011 Finding Teamates 数学
  • 原文地址:https://www.cnblogs.com/shangliang88/p/7541741.html
Copyright © 2020-2023  润新知