我正在使用Java 7,java.nio.file.WatchEvent以及WatchService。注册后,当我轮询ENTRY_MODIFY事件时,我无法访问该事件的文件的绝对路径。有没有办法从WatchEvent对象到达文件的绝对路径?
答案 0 :(得分:96)
您需要从WatchKey获取父目录以解析完整路径
WatchKey key;
WatchEvent<Path> event;
Path dir = (Path)key.watchable();
Path fullPath = dir.resolve(event.context());
这段代码读起来需要随附文档才能掌握,它本身就没什么意义。他们对这种特殊API设计的意图是什么?
这只是可能不直观的用法的开始。 Java的文件监视器API在主观上不如替代库。
答案 1 :(得分:2)
当然,您要查看存储已注册WatchKey
的多个目录(例如,监控文件树以进行更改),并且在Path
中关联Map<WatchKey, Path>
也是可行的溶液
当触发某个事件时,可能会要求Map
提供与给定Path
相关联的WatchKey
,然后可以使用该Path
解析已更改文件的Path
与WatchKey
相关联的 Intent myIntent = new Intent(NavigationDrawerFragment.this, AddIntake.class);
的帮助。
答案 2 :(得分:-3)
根据您拥有的对象,您可以获得它的绝对路径:
Path.toAbsolutePath() File.getAbsoluteFile()
答案 3 :(得分:-3)
String fullPath = path.toString()+“\\”+ event.context()。toString();
:d