【GT-安卓应用开发之清理缓存】

前言:正文开始之前我们先熟悉一下两个概念:清理缓存与清理数据,所谓缓存我们可以将其看作一个临时存储,比如下载图片时生成的缓存文件;而数据则指的是用户的一些配置数据,比如SP与数据库或者一些其他配置文件。与存储类似的,在安卓中缓存也是分成内部缓存与外部缓存,所以在清除缓存的时候需要注意,以免清理不完全。

            接下来,让我们来一起实现简单的清理缓存:

            Step1,计算缓存大小

            前面我们提到过缓存分为内部缓存与外部缓存,所以缓存大小=内部缓存大小+外部缓存大小

            我们定义一个函数来计算某一个目录的大小,需要注意的是该目录下可能既有文件夹又有文件,在这里会用到递归,代码如下:

            

public long getCacheSize(File file) throws Exception {
    long size = 0;
    try {
        File[] files = file.listFiles();
        for (int i = 0; i < files.length; i++) {
            // 如果下面还有文件
            if (files[i].isDirectory()) {
                size = size + getCacheSize(files[i]);
            } else {
                size = size + files[i].length();
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return size;
}

        上面代码计算出来的大小是long类型的,我们需要将其转化为我们熟悉的格式,转化代码如下:

        

public String getFormatedSize(long file)
{
    DecimalFormat df = new DecimalFormat("#.00");
    String size = "";
    String wrongSize="0B";
    if(file==0){
        return wrongSize;
    }
    if (file < 1024){
        size = df.format((double) file) + "B";
    }
    else if (file < 1048576){
        size = df.format((double) file / 1024) + "KB";
    }
    else if (file < 1073741824){
        size = df.format((double) file / 1048576) + "MB";
    }
    else{
        size = df.format((double) file / 1073741824) + "GB";
    }
    return size;
}

          Step2,清理提醒:

          为避免用户误操作而导致数据的丢失,用户在选择清理缓存后一般都会弹出一个提醒框,由于代码较简单,这里就不贴出来了

         Step3,开始清理:

         同样的,清理缓存既要清理内部缓存又要清理外出缓存,代码如下:

public void doCacheClear(){
    try {
        deleteFilesByDirectory(this.getCacheDir());
        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
            deleteFilesByDirectory(this.getExternalCacheDir());
        }
        Toast.makeText(this, "清理成功", Toast.LENGTH_SHORT).show();
    }catch(Exception e){
        Toast.makeText(this, "清理失败,请稍后重试", Toast.LENGTH_SHORT).show();
    }
}
 private static void deleteFilesByDirectory(File directory) {
     if (directory != null && directory.exists() && directory.isDirectory()) {
         for (File item : directory.listFiles()) {
             item.delete();
         }
     }
 }

            

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
gt-shapefile是一个基于Geotools库的Java库,用于读取、写入和处理Shapefile格式的地理空间数据。 Shapefile是一种常用的地理空间数据格式,由多个文件组成,包括.shp、.shx和.dbf等,它可以存储点、线、面等不同类型的地理要素及其属性信息。 gt-shapefile提供了用于读取和写入Shapefile文件的方法,可以方便地将地理要素数据导入到Java程序中进行处理,或者将处理后的数据导出为Shapefile文件。通过gt-shapefile库,可以轻松地实现Shapefile文件的添加、修改和删除等操作,以及空间查询、空间分析等功能。 使用gt-shapefile时,首先需要创建一个Shapefile数据源,并指定Shapefile文件的路径。可以通过ShapefileDataStoreFinder类提供的静态方法获取数据源对象。然后,可以通过数据源对象获取FeatureSource对象,用于读取和写入地理要素数据。FeatureSource对象提供了访问地理要素及其属性的方法,可以方便地进行数据查询和数据操作。 此外,gt-shapefile还提供了一些用于处理地理要素数据的工具类和方法,比如计算地理要素的面积和长度等,以及进行空间坐标系的转换等。借助这些工具类和方法,可以更加灵活地处理和分析地理空间数据。 总之,gt-shapefile是一个功能强大的Java库,可以方便地读写和处理Shapefile格式的地理空间数据,为地理信息系统开发提供了便利。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值