簡體   English   中英

java.nio.file.WatchEvent 只給我相對路徑。 如何獲取修改后文件的絕對路徑?

[英]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.WatchEventWatchService 注冊后,當我輪詢 ENTRY_MODIFY 事件時,我無法獲得該事件的文件的絕對路徑。 有沒有辦法從 WatchEvent 對象獲取文件的絕對路徑?

需要從WatchKey中獲取父目錄才能解析完整路徑

WatchKey key;
WatchEvent<Path> event;

Path dir = (Path)key.watchable();
Path fullPath = dir.resolve(event.context());

這段代碼讀起來像是需要隨附的文檔才能掌握,它本身沒有什么意義。 他們對這個特定的 API 設計的意圖是什么?

這只是可能不直觀的用法的開始。 Java 的文件觀察器 API 主觀上不如替代庫。

如果您想查看多個目錄(例如監視文件樹的更改),將注冊的WatchKey及其關聯的PathMap<WatchKey, Path>這也是一個可行的解決方案。

當觸發事件的Map ,可以要求相關的Path與給定WatchKey ,然后將Path更改后的文件可以用的幫助來解決PathWatchKey相關聯。

String fullPath = path.toString() + "\\\\"+ event.context().toString();

:D

根據您擁有的對象,您可以獲得它的絕對路徑:

Path.toAbsolutePath()

File.getAbsoluteFile()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM