From: Niki Roo Date: Sun, 14 Apr 2019 09:37:39 +0000 (+0200) Subject: better cache X-Git-Url: http://git.nikiroo.be/?p=nikiroo-utils.git;a=commitdiff_plain;h=223aa0d4e40e5f3ba9f7b9a7a2165aaff4bf7494 better cache --- diff --git a/src/be/nikiroo/utils/Cache.java b/src/be/nikiroo/utils/Cache.java index 18b811e..dbe2020 100644 --- a/src/be/nikiroo/utils/Cache.java +++ b/src/be/nikiroo/utils/Cache.java @@ -158,51 +158,43 @@ public class Cache { * @return the number of cleaned items */ public int clean(boolean onlyOld) { - return clean(onlyOld, dir); - } - - /** - * Clean the cache (delete the cached items) in the given cache directory. - * - * @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 clean(boolean onlyOld, File cacheDir) { long ms = System.currentTimeMillis(); tracer.trace("Cleaning cache from old files..."); - int num = doClean(onlyOld, cacheDir); + int num = clean(onlyOld, dir, -1); - tracer.trace("Cache cleaned in " + (System.currentTimeMillis() - ms) - + " ms"); + tracer.trace(num + "cache items cleaned in " + + (System.currentTimeMillis() - ms) + " ms"); return num; } /** - * Actual work done for {@link Cache#clean(boolean, File)}. + * Clean the cache (delete the cached items) in the given cache directory. * * @param onlyOld * only clean the files that are considered too old for stable * resources * @param cacheDir * the cache directory to clean + * @param limit + * stop after limit files deleted, or -1 for unlimited * * @return the number of cleaned items */ - private int doClean(boolean onlyOld, File cacheDir) { + private int clean(boolean onlyOld, File cacheDir, int limit) { int num = 0; File[] files = cacheDir.listFiles(); if (files != null) { for (File file : files) { + if (limit >= 0 && num >= limit) { + return num; + } + if (file.isDirectory()) { - num += doClean(onlyOld, file); + num += clean(onlyOld, file, limit); + file.delete(); // only if empty } else { if (!onlyOld || isOld(file, true)) { if (file.delete()) { @@ -327,7 +319,7 @@ public class Cache { * in case of I/O error */ private void save(InputStream in, File cached) throws IOException { - clean(true); + clean(true, dir, 10); IOUtils.write(in, cached); } diff --git a/src/be/nikiroo/utils/Downloader.java b/src/be/nikiroo/utils/Downloader.java index 5c847fa..efc6a98 100644 --- a/src/be/nikiroo/utils/Downloader.java +++ b/src/be/nikiroo/utils/Downloader.java @@ -249,8 +249,8 @@ public class Downloader { if (cache != null) { InputStream in = cache.load(originalUrl, false, stable); if (in != null) { - tracer.trace("Take from cache: " + url); - tracer.trace("Original URL from cache: " + originalUrl); + tracer.trace("Use the cache: " + url); + tracer.trace("Original URL : " + originalUrl); return in; } } @@ -388,7 +388,6 @@ public class Downloader { builder.append(';'); } - // TODO: check if format is ok builder.append(cookie.toString()); } diff --git a/src/be/nikiroo/utils/TempFiles.java b/src/be/nikiroo/utils/TempFiles.java index b4ac6d2..865fbce 100644 --- a/src/be/nikiroo/utils/TempFiles.java +++ b/src/be/nikiroo/utils/TempFiles.java @@ -63,7 +63,9 @@ public class TempFiles implements Closeable { root = base; - IOUtils.deltree(root, true); + if (root.exists()) { + IOUtils.deltree(root, true); + } root = new File(root.getParentFile(), ".temp"); root.mkdir();