package com.github.droidfu.cachefu; import java.io.File; import java.io.FilenameFilter; import java.util.Set; public class CacheHelper { public static String getFileNameFromUrl(String url) { // replace all special URI characters with a single + symbol return url.replaceAll("[.:/,%?&=]", "+").replaceAll("[+]+", "+"); } public static void removeAllWithStringPrefix(AbstractCache<String, ?> cache, String urlPrefix) { Set<String> keys = cache.keySet(); for (String key : keys) { if (key.startsWith(urlPrefix)) { cache.remove(key); } } if (cache.isDiskCacheEnabled()) { removeExpiredCache(cache, urlPrefix); } } private static void removeExpiredCache(final AbstractCache<String, ?> cache, final String urlPrefix) { final File cacheDir = new File(cache.getDiskCacheDirectory()); if (!cacheDir.exists()) { return; } File[] list = cacheDir.listFiles(new FilenameFilter() { @Override public boolean accept(File dir, String filename) { return dir.equals(cacheDir) && filename.startsWith(cache.getFileNameForKey(urlPrefix)); } }); if (list == null || list.length == 0) { return; } for (File file : list) { file.delete(); } } }