java filesystemwatcher

java.nio.file.WatchEvent me da solo una ruta relativa. ¿Cómo puedo obtener la ruta absoluta del archivo modificado?



filesystemwatcher (4)

Estoy usando Java 7, java.nio.file.WatchEvent junto con WatchService. Después de registrarme, cuando sondeo para eventos ENTRY_MODIFY, no puedo acceder a la ruta absoluta del archivo para el evento. ¿Hay alguna forma de llegar a la ruta absoluta del archivo desde el objeto WatchEvent?


Concedido que querrá ver múltiples directorios (por ejemplo, monitorear un árbol de archivos para cambios) almacenar WatchKey registrada y su Path asociada en un Map<WatchKey, Path> también sería una solución viable.

Cuando se desencadena un evento, se podría pedir al Map la Path asociada con la WatchKey dada y luego la Path del archivo modificado podría resolverse con la ayuda de la Path la que WatchKey está asociada.


Dependiendo de qué objeto tenga, puede obtener una ruta de acceso absoluta:

Path.toAbsolutePath ()

File.getAbsoluteFile ()


Necesita obtener el directorio principal de WatchKey para resolver la ruta completa

WatchKey key; WatchEvent<Path> event; Path dir = (Path)key.watchable(); Path fullPath = dir.resolve(event.context());

Este fragmento de código dice que necesita documentación que acompañar para ser captado, tiene poco sentido por sí mismo. ¿Cuáles fueron sus intenciones con este diseño de API en particular?

Y esto es solo el comienzo de un uso posiblemente poco intuitivo. La API del observador de archivos de Java es subjetivamente inferior a las bibliotecas alternativas.


String fullPath = path.toString () + "//" + event.context (). ToString ();

:RE