文件清除缓存

来源:互联网 发布:手机淘宝自动挂机赚钱 编辑:程序博客网 时间:2024/05/29 12:37
public class MainActivity extends AppCompatActivity implements View.OnClickListener {    private ImageView iv;    private RelativeLayout clearLayout, versionLayout;    private TextView versionTv, cacheTv;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        initData();    }    /**     * 初始化缓存大小和版本信息     */    private void initData() {        ImageLoader.getInstance().displayImage("图片地址", iv);        initVersion();        initCaches();    }    /**     * 初始化缓存信息     */    private void initCaches() {        long fileSize = 0;        //获取data/data/包名/cache文件大小        fileSize += getDirSize(getCacheDir());        //获取files文件夹大小        fileSize += getDirSize(getFilesDir());        cacheTv.setText(formatFileSize(fileSize));        System.out.println("cachedir" + getCacheDir());        System.out.println("filesdir" + getFilesDir());    }    /**     * 初始化版本信息     */    private void initVersion() {        //版本信息        try {            PackageManager manager = getPackageManager();            PackageInfo packageInfo = manager.getPackageInfo(getPackageName(), 0);            versionTv.setText("V" + packageInfo.versionName);        } catch (PackageManager.NameNotFoundException e) {            e.printStackTrace();        }    }    private void initView() {        iv = (ImageView) findViewById(R.id.iv);        clearLayout = (RelativeLayout) findViewById(R.id.clear);        versionLayout = (RelativeLayout) findViewById(R.id.version);        cacheTv = (TextView) findViewById(R.id.tv_cache);        versionTv = (TextView) findViewById(R.id.tv_version);        clearLayout.setOnClickListener(this);        versionLayout.setOnClickListener(this);    }    @Override    public void onClick(View view) {        switch (view.getId()) {            case R.id.clear:                final AlertDialog.Builder clearBuilder = new AlertDialog.Builder(this);                clearBuilder.setTitle("清理缓存");                clearBuilder.setMessage("确定要清理缓存?");                clearBuilder.setNegativeButton("取消", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialogInterface, int i) {                    }                });                clearBuilder.setPositiveButton("确定", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialogInterface, int i) {                        clearCaches();                    }                });                clearBuilder.show();                break;            case R.id.version:                final AlertDialog.Builder versionBuilder = new AlertDialog.Builder(this);                versionBuilder.setTitle("检查版本");                versionBuilder.setMessage("确定要版本更新?");                versionBuilder.setNegativeButton("取消", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialogInterface, int i) {                    }                });                versionBuilder.setPositiveButton("确定", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialogInterface, int i) {                        Toast.makeText(MainActivity.this, "走版本更新逻辑", Toast.LENGTH_SHORT).show();                    }                });                versionBuilder.show();                break;        }    }    /**     * 清理缓存     */    private void clearCaches() {        //清除cache目录下缓存        clearCaches(getCacheDir());        //清除files目录下缓存        clearCaches(getFilesDir());        File sharedDir = new File("/data/data/" + getPackageName() + "/shared_prefs");        clearCaches(sharedDir);        //清除成功后,重新设置下页面数据        cacheTv.setText("0B");    }    /**     * 清除缓存逻辑     *     * @param dir     */    private void clearCaches(File dir) {        //判断file是文件夹        if (dir != null && dir.isDirectory()) {            //得到该目录下所有文件            File[] f = dir.listFiles();            //遍历删除该目录下所有文件            if (f!=null&&f.length>0){                for (File file1 : f) {                    //删除方法                    file1.delete();                }            }            Toast.makeText(MainActivity.this, "清除成功", Toast.LENGTH_SHORT).show();        }    }    /**     * 获取目录文件大小     *     * @param dir     * @return     */    public static long getDirSize(File dir) {        if (dir == null) {            return 0;        }        if (!dir.isDirectory()) {            return 0;        }        long dirSize = 0;        File[] files = dir.listFiles();        for (File file : files) {            if (file.isFile()) {//如果是文件的,累加大小                dirSize += file.length();            } else if (file.isDirectory()) {//如果是目录,累加大小                dirSize += file.length();                dirSize += getDirSize(file); // 递归调用继续统计            }        }        return dirSize;    }    /**     * 转换文件大小     *     * @param fileS     * @return B/KB/MB/GB     */    public static String formatFileSize(long fileS) {        DecimalFormat df = new DecimalFormat("#.00");//保留两位小数        String fileSizeString = "";        if (fileS < 1024) {            fileSizeString = df.format((double) fileS) + "B";        } else if (fileS < 1048576) {            fileSizeString = df.format((double) fileS / 1024) + "KB";        } else if (fileS < 1073741824) {            fileSizeString = df.format((double) fileS / 1048576) + "MB";        } else {            fileSizeString = df.format((double) fileS / 1073741824) + "G";        }        return fileSizeString;    }}




原创粉丝点击