java - android以编程方式删除旧的缓存数据

标签 java android file caching

我正在使用 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/

相关文章:

java - 准备好的语句参数索引超出范围(0 < 1)

java - 如何通过 Unix 输入重定向将文件作为数组输入到我的 java 程序中?

android - 如何在 Instagram 中分享文字

c - C中获取字符串第一个元素的第一个元素

java - 使用列表列表时难以使用 subList

java - 无法解析 DateSetListener 对象

java - Android和Java服务器之间的socket编程问题

java - 几次文件上传后应用程序没有响应

PHP 文件大小 MB/KB 转换

java - 变量作用域为整个类