我使用nio.2類的Watch Service API來觀察特定的目錄(Ubuntu 11.10)。無論何時進行更改,例如,如果我在現有文件中進行修改,則會發生2次修改事件。不知道爲什麼?當我創建新文件時它工作正常。獲取修改文件中更改的事件?
2
A
回答
3
我爲它找到一個解決方案。它觸發兩個修改事件,因爲當文件系統寫入新文件時,它會用零字節創建它並觸發創建事件,然後將數據寫入和文件,然後觸發修改事件。
這同樣適用於修改。當我們修改一個已經存在的文件時,文件系統首先用0字節創建它,然後觸發一個修改事件,然後將數據寫入它。然後它再次觸發修改事件。這就是我收到兩個修改事件的原因。
1
我已經使用了Oracle的example,奇怪的是它有時會觸發ENTRY_MODIFY,有時會觸發一次。我正在使用Windows機器。
在文檔有關於可能的重複事件沒有資料,所以我想這或者是一個無證的行爲或錯誤。
相關問題
- 1. C#獲取文件更改事件
- 2. 獲取更改事件
- 3. SAPUI5數據綁定獲取更改事件中更改的值
- 4. 獲取已修改文件的列表
- 5. 獲取修改文件夾的日期
- 6. PhpStorm - 獲取文件的修改時間
- 7. 獲取iframe內容的更改事件?
- 8. 如何捕獲更改文件夾中文件的事件?
- 9. 更改的文件未被修改?
- 10. 如何獲取在雲文件中修改文件的日期?
- 11. 用Ant修改文件獲取目錄
- 12. 如何從QFileSystemWatcher` directoryChanged`事件獲取已更改的文件名
- 13. Xcode更改未修改的故事板和XIB文件
- 14. 獲取事件 - 但僅更改樹
- 15. Sencha Touch - 獲取更改事件記錄
- 16. Mercurial - 獲取最近更改集中更改的文件列表
- 17. 如何獲取文件的修訂版本號或修改/更改時的更改列表號
- 18. 更改文件名至修改日期
- 19. Linux更改文件修改日期?
- 20. 取消WPF文本框更改事件
- 21. 在按鈕單擊事件中獲取DataGridView修改的內容
- 22. 獲取更改事件以在SyncFusion的SFAutoComplete控件中觸發
- 23. 在修改後的事件中更改座標
- 24. Mercurial:從修訂版獲取已更改的文件?
- 25. 更改事件
- 26. 更改事件
- 27. 從更改事件中獲取舊文本?
- 28. 使用gitpython獲取更改的文件
- 29. 僅獲取已更改的文件
- 30. Linux - 修改文件修改/訪問/更改時間
謝謝答覆,我得到了解決方案。這不是因爲錯誤。當我們編寫或編輯文件。 OS FileSystem首先用0字節創建一個文件,然後對其進行更改。這就是爲什麼我們收到兩個修改事件。同樣,當我們創建一個新文件(使用某些數據或粘貼某個文件時),它會首先觸發兩個事件,第二個觸發器用於修改。 –
考慮以下情形: 1)我打開文件進行修改。 2)我改變它並保存。 3)有時我有兩個事件,有時只有一個。 爲什麼它的行爲不同呢? –
我每次修改文件時都收到2個事件。根據我的知識,當你修改你的文件時應該通知你兩次。不知道爲什麼你有一次通知 - 由於操作系統的差異。 –