Java | Фишки и трюки
7.21K subscribers
182 photos
29 videos
6 files
40 links
Java: примеры кода, интересные фишки и полезные трюки

Купить рекламу: https://telega.in/c/java_tips_and_tricks

✍️По всем вопросам: @Pascal4eg
Download Telegram
⌨️ WatchService: мониторинг изменений файловой системы

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