Java библиотека

@javalib
Фото Следим за появлением файлов в папке через WatchService! Создадим наблюдатель и зарегистрируем каталог. Папка должна существовать заранее: Path dir = Path.of("incoming"); try (WatchService watcher = FileSystems.getDefault().newWatchService()) { dir.register(watcher, ENTRY_CREATE, ENTRY_MODIFY); Константы ENTRY_CREATE и ENTRY_MODIFY берутся из StandardWatchEventKinds. try-with-resources закроет наблюдатель при выходе из блока. Дальше ждём сигнал. Метод take блокирует поток, пока событие не появится: while (true) { WatchKey key = watcher.take(); for (WatchEvent<?> event : key.pollEvents()) { Контекст события содержит имя относительно наблюдаемой папки, а не готовый абсолютный путь. Не подставляй его отдельно от dir: if (event.kind() == OVERFLOW) continue; Path file = dir.resolve((Path) event.context()); System.out.println(event.kind() + " " + file); } После обработки обязательно сбросим ключ. Если каталог удалён или больше недоступен, reset вернёт false: if (!key.reset()) break; } } События могут повторяться, а при перегрузке наблюдатель сообщит OVERFLOW. Поэтому важную обработку лучше делать идемпотентной и предусмотреть повторное сканирование каталога после переполнения. Java Библиотека | Мы в Телеграм
Если у вас установлено приложение,
вы можете сразу перейти в канал