[英]java.nio.file.WatchEvent gives me only relative path. How can I get the absolute path of the modified file?
我正在使用 Java 7、 java.nio.file.WatchEvent
和WatchService
。 注冊后,當我輪詢 ENTRY_MODIFY 事件時,我無法獲得該事件的文件的絕對路徑。 有沒有辦法從 WatchEvent 對象獲取文件的絕對路徑?
需要從WatchKey中獲取父目錄才能解析完整路徑
WatchKey key;
WatchEvent<Path> event;
Path dir = (Path)key.watchable();
Path fullPath = dir.resolve(event.context());
這段代碼讀起來像是需要隨附的文檔才能掌握,它本身沒有什么意義。 他們對這個特定的 API 設計的意圖是什么?
這只是可能不直觀的用法的開始。 Java 的文件觀察器 API 主觀上不如替代庫。
如果您想查看多個目錄(例如監視文件樹的更改),將注冊的WatchKey
及其關聯的Path
在Map<WatchKey, Path>
這也是一個可行的解決方案。
當觸發事件的Map
,可以要求相關的Path
與給定WatchKey
,然后將Path
更改后的文件可以用的幫助來解決Path
的WatchKey
相關聯。
String fullPath = path.toString() + "\\\\"+ event.context().toString();
:D
根據您擁有的對象,您可以獲得它的絕對路徑:
Path.toAbsolutePath()
File.getAbsoluteFile()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.