[英]How to detect if a file has been renamed?
我目前正在用Java實現自己的WatchService API版本 。
(您可以參考此示例以了解WatchService的作用。)
我已經為以下情況實現了代碼 :
我遇到一個問題,無論何時重命名文件,我都不知道如何跟蹤它。
此鏈接包含我的代碼的概要: 單擊此處
每當文件被重命名時,我都會得到2條結果
刪除的文件: {舊文件名}
添加的文件: {新文件名}
但是我想要的實際結果是:
文件重命名:從{舊文件名}到{新文件名}
我該如何應對這一挑戰?
我提供了一個偽代碼(我認為足以理解當前的問題),如果需要,我也可以提供整個代碼:)
您可以為每個文件存儲哈希。 當您檢測到某些文件被刪除而一些添加的比較哈希,如果它們匹配,您會發現已重命名/移動的文件。
每當重命名文件時,觀察程序服務都會生成delete + create事件。 您應該了解如何將這兩個事件合並為重命名事件。
您可以創建一個唯一的ID並將其分配給文件。 請參考此鏈接 。 每當您在文件上看到一個create事件並且它已經有一些ID時,即表示它已被重命名,否則它是新創建的。 對於新創建的文件,應設置隨機唯一ID以跟蹤重命名事件。
JNotify支持JNotify.FILE_RENAMED
事件。 據我了解,這是本機inotify API的包裝,它可以在系統級別捕獲文件重命名(更改名稱而不更改文件描述符)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.