Я бы выбрал свою собственную, потому что проблема звучит так легко, что написать ее самостоятельно, вероятно, проще, чем попытаться изучить и принять существующую библиотеку: -)
Если это небольшое количество файлов и / иливаши деньги доступны из нескольких процессов, перед записью файла вызовите следующий метод:
void deleteOldFiles(String dir, long maxFileCount) {
while (true) {
File oldest = null;
long oldestTime = 0;
File[] list = new File(dir).listFiles();
if (list.length < maxFileCount) {
break;
}
for (File f : list) {
long m = f.lastModified();
if (oldest == null || oldestTime > m) {
oldestTime = m;
oldest = f;
}
}
oldest.delete();
}
}
Если вы обращаетесь к кешу только из одного процесса, вы можете написать что-нибудь более эффективное, используя LinkedHashMap
или LinkedHashSet
.
Обновление
Проверьте количество файлов вместо общего размера файла.