WatchService из java.nio.file — это инструмент для отслеживания изменений в файловой системе. С его помощью можно отслеживать создание, изменение и удаление файлов или папок в указанном каталоге. 🔍 Почему WatchService?
1️⃣ Лёгкий способ мониторинга изменений без ручных проверок.
2️⃣ Эффективно работает в реальном времени.
3️⃣ Удобно для отслеживания логов, конфигурационных файлов или загрузок.
📌 Пример использования:
import java.io.IOException;
import java.nio.file.*;
public class WatchServiceExample {
public static void main(String[] args) throws IOException, InterruptedException {
Path path = Paths.get("watched_directory");
// Создаём WatchService
try (WatchService watchService = FileSystems.getDefault().newWatchService()) {
// Регистрируем каталог для мониторинга
path.register(watchService, StandardWatchEventKinds.ENTRY_CREATE,
StandardWatchEventKinds.ENTRY_MODIFY,
StandardWatchEventKinds.ENTRY_DELETE);
System.out.println("Мониторинг изменений в каталоге: " + path);
while (true) {
WatchKey key = watchService.take(); // Блокирует поток до события
for (WatchEvent<?> event : key.pollEvents()) {
WatchEvent.Kind<?> kind = event.kind();
Path fileName = (Path) event.context();
System.out.println("Событие: " + kind + " для файла: " + fileName);
}
// Сбрасываем ключ, чтобы продолжать мониторинг
boolean valid = key.reset();
if (!valid) {
break; // Если ключ недействителен, выходим из цикла
}
}
}
}
}
🔗 Как это работает:
1️⃣ Регистрируйте каталог с указанием типов событий (
ENTRY_CREATE, ENTRY_MODIFY, ENTRY_DELETE). 2️⃣ Обрабатывайте события через
WatchKey и список pollEvents(). 3️⃣ Вызывайте
key.reset() после обработки событий, чтобы продолжить мониторинг. 💡 Совет: Убедитесь, что ваш код учитывает, что
WatchService отслеживает только верхний уровень каталога (не вложенные папки). #Java #WatchService #nio
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5