我使用的是Java7、java.nio.file.WatchEvent
和WatchService
。注册后,当我轮询ENTRY_MODIFY事件时,我无法获得该事件的文件的绝对路径。有没有办法从WatchEvent对象中获取文件的绝对路径?
发布于 2011-10-18 11:19:36
您需要从WatchKey获取父目录以解析完整路径
WatchKey key;
WatchEvent<Path> event;
Path dir = (Path)key.watchable();
Path fullPath = dir.resolve(event.context());
这段代码读起来像是需要附带的文档才能理解,它本身没有什么意义。他们对这个特殊的API设计的意图是什么?
这仅仅是可能不直观的用法的开始。Java的文件监视器API在主观上不如其他库。
发布于 2015-10-06 14:20:41
假设您想要监视多个目录(例如,监视文件树的变化),在Map<WatchKey, Path>
中存储已注册的WatchKey
及其关联的Path
也是一个可行的解决方案。
当事件被触发时,可以要求Map
提供与给定WatchKey
相关联的Path
,然后可以在与WatchKey
相关联的Path
的帮助下解析更改的文件的Path
。
发布于 2011-10-18 10:26:37
深入挖掘你所拥有的对象,你可以得到它的绝对路径:
Path.toAbsolutePath()
File.getAbsoluteFile()
https://stackoverflow.com/questions/7801662
复制相似问题