android 文件缓存 DiskLruCache

DiskLruCache 并没有限制缓存的位置,可以自己设置,但是一般的应用程序都会讲缓存卑职设置为/sdcard/Android/data/<application package>/cache

这样做有两个好处

1,存储位置在sdcard 上,不会对手机的内置存储空间造成影响

2,这个路径被android系统认定为应用程序的缓存路径,当应用程序卸载时,改书记一并清除掉,不会留下残余数据

DiskLruCache 并不是在sdk中, 需要自己下载。

获取缓存路径

/***
  * 获取缓存路径
  * @param context
  * @param filePath
  * @return
  */
 public static File getDiskCacheDir(Context context ,String filePath){
  File path;
  if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
   path = context.getExternalCacheDir();
  }else{
   path = context.getCacheDir();
  }
  File file = new File(path + File.separator +filePath);
  return file;

 }

前者获取到的就是 /sdcard/Android/data/<application package>/cache 这个路径,而后者获取到的是 /data/data/<application package>/cache 这个路径。

/****
  * 创建缓存文件夹
  * @param context
  * @param fileDirName
  * @return
  */
 public static DiskLruCache creatDiskLurCacheDir(Context context ,String fileDirName){
  DiskLruCache mDiskCache = null;
  try {
   //得到缓存文件
   File diskCacheDir = getDiskCacheDir(context, fileDirName);
   if(!diskCacheDir.exists())
    diskCacheDir.mkdirs();
   mDiskCache = DiskLruCache.open(diskCacheDir, 1, 1,DISK_CACHE_SIZE);
   Log.v(TAG, "path === "+ diskCacheDir.getPath());
   Log.v(TAG, "absolutePath === "+diskCacheDir.getAbsolutePath());
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return mDiskCache;
 }

其中  DiskLruCache.open(File directory, int appVersion, int valueCount, long maxSize)

directory 文件夹

appVersion 当前应用的appversion,当version 变化的时候,缓存文件会清除,需要重新从网络下载等

valueCount 一个文件名对应几个文件,一般为 1,

maxSize 文件的最大的size

 

保存文件到缓存文件夹

public void save2Cache(String key, Object obj) {
  OutputStream out = null;
  if(obj == null)
   return;
  String str = obj.toString();
  try {
   DiskLruCache.Editor editor  = fileDiskLruCache.edit(key);
   if(editor != null){
    out = editor.newOutputStream(0);
    if(!TextUtils.isEmpty(str)){
     out.write(str.getBytes());
     editor.commit();
    }else{
     editor.abort();
    }
    fileDiskLruCache.flush();   
   }
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }finally{
   DiskCacheCommonUtils.closeSliently(out);
  }
  
 }

 

 

获取缓存文件


 public Object getFromCache(String key) {
  BufferedReader br = null;
  String str ="";
  try {
   DiskLruCache.Snapshot snapShot = fileDiskLruCache.get(key);
   if (snapShot != null) {
     br = new BufferedReader(new InputStreamReader(snapShot.getInputStream(0)));
     String line = "";
     while((line = br.readLine()) != null){
      str += line;
     }
   }      
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }finally{
   DiskCacheCommonUtils.closeSliently(br);
  }
  return str;
 }

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
飞飞影视系统 安装说明 --------------------------------------- 1. 将文件夹下所有的文件上传至您的网站空间 2. 如果您的主机为 window 操作系统,请将以下文件夹的IIS用户加上写入权限 3. 如果您的主机为 linux 操作系统,请设置如下文件夹权限为 777 ./Runtime/* 系统缓存目录 ./Uploads/* 系统附件保存目录 4. 通过浏览器访问 http://您的域名/install.php,根据提示填写 mysql 配置信息 5. 完成安装后会自动跳转到后台,默认用户名是admin 密码是admin888 6. 后台路径为http://您的域名/admin.php(强列建议将admin.php改一个不容易猜到的名字) 更多采集可在网上搜资源站,然后打上资源站提供的采集插件即可。这是在网上搜到的一个:www.soshitv.com/down.html 注意:只打资源站提供的采集补丁,不要打播放器补丁,否则可能导致3个播放器同时支持有问题。 --------------------------------------- 飞飞影视系统 建站流程 --------------------------------------- 1. 安装完毕后进入后台,选择“后台用户”,更改管理员密码 2. 选择“基本设置”,修改为您的一些个性配置信息 3. 配置完毕后,请到采集管理>一键采集资源,官方资源库,一键采集需要的数据 4. 最后“插件工具”,修改里面的广告,并备份数据库即可 注意1∶如果您要使用飞飞影视系统建站,请保留官方站的友链链接与版权信息! 注意2∶默认的伪静态规则(Apache,iis,nginx)都已经写好放在rewrite目录,只需要你的空间支持并将其移动到根目录即可! 注意3∶其它web服务器的伪静态规则请上官网(http://www.feifeiicms.cc)交流获取(rewrite主题分类)

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值