X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;ds=sidebyside;f=src%2Fbe%2Fnikiroo%2Futils%2FCache.java;h=18b811e397f09c241af4ebaef49a2a1662c4c8a0;hb=82fcfcde9722e9e3b3eb713cf1f2bcb35fefaa7e;hp=13a50ea92219663a379eb58d7956237217a3f49a;hpb=0988831f084e27de9927c1bb29e338e9263bfa42;p=nikiroo-utils.git diff --git a/src/be/nikiroo/utils/Cache.java b/src/be/nikiroo/utils/Cache.java index 13a50ea..18b811e 100644 --- a/src/be/nikiroo/utils/Cache.java +++ b/src/be/nikiroo/utils/Cache.java @@ -173,12 +173,36 @@ public class Cache { * @return the number of cleaned items */ private int clean(boolean onlyOld, File cacheDir) { + long ms = System.currentTimeMillis(); + + tracer.trace("Cleaning cache from old files..."); + + int num = doClean(onlyOld, cacheDir); + + tracer.trace("Cache cleaned in " + (System.currentTimeMillis() - ms) + + " ms"); + + return num; + } + + /** + * Actual work done for {@link Cache#clean(boolean, File)}. + * + * @param onlyOld + * only clean the files that are considered too old for stable + * resources + * @param cacheDir + * the cache directory to clean + * + * @return the number of cleaned items + */ + private int doClean(boolean onlyOld, File cacheDir) { int num = 0; File[] files = cacheDir.listFiles(); if (files != null) { for (File file : files) { if (file.isDirectory()) { - num += clean(onlyOld, file); + num += doClean(onlyOld, file); } else { if (!onlyOld || isOld(file, true)) { if (file.delete()) { @@ -220,8 +244,9 @@ public class Cache { * @param allowTooOld * allow files even if they are considered too old * @param stable - * a stable file (that dones't change too often) -- parameter - * used to check if the file is too old to keep or not + * a stable file (that doesn't change too often) -- parameter + * used to check if the file is too old to keep or not in the + * cache * * @return the opened resource if found, NULL if not */ @@ -290,6 +315,8 @@ public class Cache { /** * Save the given resource to the cache. + *

+ * Will also clean the {@link Cache} from old files. * * @param in * the input data @@ -300,6 +327,7 @@ public class Cache { * in case of I/O error */ private void save(InputStream in, File cached) throws IOException { + clean(true); IOUtils.write(in, cached); }