У меня есть каталог, который постоянно заполняется файлами "артефактов". Многие разные программы сбрасывают свои временные файлы в этот каталог, и маловероятно, что эти программы станут самоочищающимися в ближайшее время.
Тем временем я хотел бы написать программу, которая постоянно удаляет файлы в этом каталоге, когда они устаревают, и я определю их как «старше 30 минут».
Типичным подходом было бы иметь синхронизированный механизм, который перечисляет файлы в каталоге, фильтрует старые данные и удаляет старые. Однако этот подход не очень эффективен в моем случае, потому что этот каталог может содержать 10 или сотни тысяч файлов, которые еще не считаются устаревшими. Следовательно, этот подход будет постоянно циклически повторять одни и те же тысячи файлов для поиска старых.
Что бы я действительно хотел бы сделать, так это реализовать какой-нибудь прослушиватель каталога, который был уведомлен о любых новых файлах, добавленных в каталог. Затем этот слушатель добавляет эти файлы в очередь для удаления в будущем. Однако, похоже, нет способа реализовать такое решение на языках, на которых я программирую (языки JVM, такие как Java и Scala).
Итак: я ищу наиболее эффективный способ сохранить каталог "настолько чистым, насколько это возможно" в Windows, предпочтительно с языком JVM. Кроме того, хотя я никогда не программировал с Powershell, я бы подумал, если бы он предлагал такую функциональность. Наконец, если есть инструменты сторонних производителей для таких вещей, я хотел бы услышать о них.
Спасибо.