博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深入解析开源项目之Universal-Image-Loader(二)硬盘---缓存篇
阅读量:6071 次
发布时间:2019-06-20

本文共 1659 字,大约阅读时间需要 5 分钟。

文件命名:

FileNameGenerator,HashCodeFileNameGenerator,Md5FileNameGenerator

package com.nostra13.universalimageloader.cache.disc.naming;/** * Generates names for files at disk cache */public interface FileNameGenerator {    /** Generates unique file name for image defined by URI */    String generate(String imageUri);}
package com.nostra13.universalimageloader.cache.disc.naming;/** * Names image file as image URI {
@linkplain String#hashCode() hashcode} */public class HashCodeFileNameGenerator implements FileNameGenerator { @Override public String generate(String imageUri) { return String.valueOf(imageUri.hashCode()); }}
package com.nostra13.universalimageloader.cache.disc.naming;import com.nostra13.universalimageloader.utils.L;import java.math.BigInteger;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;/** * Names image file as MD5 hash of image URI */public class Md5FileNameGenerator implements FileNameGenerator {    private static final String HASH_ALGORITHM = "MD5";    private static final int RADIX = 10 + 26; // 10 digits + 26 letters    @Override    public String generate(String imageUri) {        byte[] md5 = getMD5(imageUri.getBytes());        BigInteger bi = new BigInteger(md5).abs();        return bi.toString(RADIX);    }    private byte[] getMD5(byte[] data) {        byte[] hash = null;        try {            MessageDigest digest = MessageDigest.getInstance(HASH_ALGORITHM);            digest.update(data);            hash = digest.digest();        } catch (NoSuchAlgorithmException e) {            L.e(e);        }        return hash;    }}

 

看完内存缓存的分析,再来看看磁盘缓存的逻辑。

相关的接口和类的关系如下:

ImageLoader磁盘关系图

你可能感兴趣的文章
Dapper丶DapperExtention,以及AbpDapper之间的关系,
查看>>
搞IT的同学们,你们在哪个等级__那些年发过的帖子
查看>>
且谈语音搜索
查看>>
MySQL数据库导入导出常用命令
查看>>
低版本Samba无法挂载
查看>>
Telegraf+Influxdb+Grafana构建监控平台
查看>>
使用excel 展现数据库内容
查看>>
C#方法拓展
查看>>
19、其他文件编程函数(目录文件、链接文件、临时文件)
查看>>
Android 画渐变的背景
查看>>
DataTable与实体类互相转换
查看>>
[Usaco2002 Feb]Rebuilding Roads重建道路
查看>>
关于javascript中apply()和call()方法的区别
查看>>
SpringAOP实战应用
查看>>
JVM快速入门
查看>>
poj 3311 Hie with the Pie (floyd+状压dp)
查看>>
HDU 6140 Hybrid Crystals
查看>>
【查漏补缺】普通类中获取有注解的类
查看>>
loadrunner Error -27985问题
查看>>
python之使用__future__
查看>>