У меня есть каталог, который постоянно заполняется файлами «артефакт». Многие разные программы сбрасывают свои временные файлы в этом каталоге, и маловероятно, что эти программы скоро станут самоочищающимися.Какой самый эффективный метод непрерывного удаления файлов старше X часов в Windows?
Между тем, я хотел бы написать программу, которая постоянно удаляет файлы в этом каталоге по мере их устаревания, которые я буду определять как «старше 30 минут».
Типичным подходом было бы иметь механизм синхронизации, который перечисляет файлы в каталоге, фильтрует старые файлы и удаляет старые файлы. Однако этот подход не очень эффективен в моем случае, потому что этот каталог может содержать 10 или сотни тысяч файлов, которые еще не считаются устаревшими. Следовательно, этот подход будет постоянно зацикливаться на тех же тысячах файлов, чтобы найти старые.
Что мне нужно действительно нравится делать какой-то прослушиватель каталогов, который был уведомлен о любых новых файлах, добавленных в каталог. Этот слушатель затем добавит эти файлы в очередь, которая будет удалена по дороге. Однако, похоже, не существует способа реализовать такое решение на языках, на которых я программирую (языки JVM, такие как Java и Scala).
Итак: Я ищу наиболее эффективный способ сохранить каталог «как можно чище» в Windows, желательно с использованием JVM-языка. Кроме того, хотя я никогда не программировал с Powershell, я бы подумал, предложил ли он такую функциональность. Наконец, если есть сторонние инструменты, чтобы делать такие вещи, я хотел бы услышать о них.
Спасибо.
Спасибо, Келли. На 100 тыс. Файлов вызов listFiles() с помощью AgeFilter занял около 3 минут. Использование dir/OD, а затем синтаксический анализ результирующей строки для файлов, которые мне нужны (по времени), длится около 4 секунд. Большое улучшение! –
Спасибо всем за отличные ответы. Для моего конкретного случая, находясь в Windows, комбинация использования java ProcessBuilder и правильных системных команд оказалась намного быстрее, чем использование традиционного java-подхода AgeFilter –