java.nio.file.WatchEvent只给我相对路径。如何获取修改文件的绝对路径?

时间:2011-10-18 02:02:47

标签: java filesystemwatcher

我正在使用Java 7,java.nio.file.WatchEvent以及WatchService。注册后,当我轮询ENTRY_MODIFY事件时,我无法访问该事件的文件的绝对路径。有没有办法从WatchEvent对象到达文件的绝对路径?

4 个答案:

答案 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解析已更改文件的PathWatchKey相关联的 Intent myIntent = new Intent(NavigationDrawerFragment.this, AddIntake.class); 的帮助。

答案 2 :(得分:-3)

根据您拥有的对象,您可以获得它的绝对路径:

Path.toAbsolutePath() File.getAbsoluteFile()

答案 3 :(得分:-3)

String fullPath = path.toString()+“\\”+ event.context()。toString();

:d