Десять последних файлов на диске - PullRequest
0 голосов
/ 16 марта 2010

Мне нужен эффективный алгоритм для хранения только десяти последних файлов на диске в определенной папке для поддержки какого-либо процесса публикации. Только 10 файлов должны присутствовать в этой папке в любой момент времени. Пожалуйста, дайте свои советы, что следует использовать здесь.

Ответы [ 3 ]

2 голосов
/ 16 марта 2010

Вы можете попросить Файл для каталога listFiles, если их более 9, отсортируйте их по lastModified () и удалите самые старые файлы (наименьшее число), чтобы сократить до 9.

1 голос
/ 16 марта 2010

Как насчет использования наблюдателя файловой системы, например JNotify ?

  1. Зарегистрироваться для интересующих вас событий (например, Созданное событие);
  2. Отметьте свой внутренний список для количества файлов при каждом созданном событии.
  3. Как только вы дойдете до 11-го файла, удалите файл с самой старой датой создания.

Или используйте Commons JCI FileAlterationMonitor (FAM) для мониторинга локальных файловых систем и получения уведомлений об изменениях:

ReloadingClassLoader classloader = new ReloadingClassLoader(this.getClass().getClassLoader());
ReloadingListener listener = new ReloadingListener();

listener.addReloadNotificationListener(classloader);

FilesystemAlterationMonitor fam = new FilesystemAlterationMonitor();
fam.addListener(directory, listener);
fam.start();

Это обсуждение может помочь вам с наблюдателями за файловой системой.

0 голосов
/ 16 марта 2010

Вам нужно будет регулярно опрашивать каталог и удалять все, что старше 10-го самого старого файла в нем. Конечно, остается открытым вопрос о том, что на самом деле является «10-ым самым старым файлом». Временная метка в файле может не указывать дату / время, когда он был добавлен в папку. Таким образом, вашей системе может понадобиться какой-то независимый способ отслеживания файлов в папке, чтобы определить, когда каждый из них был добавлен, чтобы удалить файлы в зависимости от того, когда укажите, а не сколько лет на самом деле.

Но это бизнес-требование, которое вы не выполняете (вы даже сами это знаете?).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...