J'utilise watchKey
pour écouter un changement de fichier dans un dossier particulier.Surveiller les sous-dossiers avec un service de surveillance Java
Path _directotyToWatch = Paths.get("E:/Raja");
WatchService watcherSvc = FileSystems.getDefault().newWatchService();
WatchKey watchKey = _directotyToWatch.register(watcherSvc, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);
while (true) {
watchKey=watcherSvc.take();
for (WatchEvent<?> event: watchKey.pollEvents()) {
WatchEvent<Path> watchEvent = castEvent(event);
System.out.println(event.kind().name().toString() + " " + _directotyToWatch.resolve(watchEvent.context()));
watchKey.reset();
}
}
Il fonctionne très bien pour moi. Si je modifie un fichier dans le dossier raja, il me donne le nom du fichier avec le chemin. Mais, quand je mets des fichiers dans des sous-dossiers comme "E:/Raja/Test", cela ne me donne que le chemin où je l'ai mis, pas le nom du fichier.
Comment obtenir le nom de fichier?
Ceci est une copie de http://stackoverflow.com/questions/5608234/how-can-i-watch-subdirectory-for-changes-with-watch-service-java –