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