* @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()) {
* @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
*/
/**
* Save the given resource to the cache.
+ * <p>
+ * Will also clean the {@link Cache} from old files.
*
* @param in
* the input data
* in case of I/O error
*/
private void save(InputStream in, File cached) throws IOException {
+ clean(true);
IOUtils.write(in, cached);
}