我正在使用 Android 磁盘缓存来缓存从服务器加载的所有图像。
我想删除所有至少 2 周未使用的缓存图像并保留剩余的图像。
这是我添加缓存图像的代码
public void addBitMaptoCache(String key,Bitmap bmp)
{
Log.e(TAG, "Cache Creation Running");
if(null != defaultBitmaps){
for(Bitmap dbmp:defaultBitmaps){
if(dbmp.sameAs(bmp)){
return;
}
}
}
if(directory!=null)
{
if(!directory.exists())
{
directory.mkdirs();
}
if(directory.exists())
{
if(directory.isDirectory())
{
File destination = new File(directory, key + ".jpg");
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 90, bytes);
FileOutputStream fo;
try {
destination.createNewFile();
fo = new FileOutputStream(destination);
fo.write(bytes.toByteArray());
fo.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
destination = new File(directory, key + ".jpg");
if(destination.exists())
{
Log.d(TAG, "Cache Created");
}
else
{
Log.e(TAG, "Cache not Created");
}
}
}
}
}
欢迎任何帮助...如果您需要更多详细信息,请告诉我...
最佳答案
可以借助文件的上次修改日期来完成。 以下代码可能会有所帮助。
if(cacheDir.isDirectory()){
File[] files=cacheDir.listFiles();
for(File file:files){
if(null != file){
long lastModified = file.lastModified();
if (0 < lastModified) {
Date lastMDate = new Date(lastModified);
Date today = new Date(System.currentTimeMillis());
if (null != lastMDate && null != today) {
long diff = today.getTime() - lastMDate.getTime();
long diffDays = diff / (24 * 60 * 60 * 1000);
if (15 < diffDays) {
file.delete();
}
}
}
}
}
}
此代码将删除超过 15 天的缓存文件。
关于java - android以编程方式删除旧的缓存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33429832/