我正在創建我的項目,在該項目中將我的PC的所有文件編入數據庫中。 現在我想知道在運行時文件是否被刪除,移動或重命名爲 ,以便我可以更新數據庫而不必重新編制索引。我們可以在運行時確定文件是否從硬盤上刪除或不使用java
0
A
回答
1
直到JDK 7惡有惡報,有沒有在java中的非原生機制來檢測文件相關的事件(包括刪除)。也就是說,即使您能夠檢測到文件刪除,您仍然需要一些算法來在應用程序啓動時使索引同步。
當我們做這樣的事情,我們一般拍攝在索引(我們使用JDBM B樹)的路徑+修改日期+文件的長度。然後重新索引是同時迭代文件夾樹和索引的問題。當您在索引中找到不在文件夾樹中的條目時,將其從索引中刪除。在文件夾樹中找到不在索引中的條目時,將其添加到索引中。如果您找到兩個條目,請檢查修改後的日期和大小。
因此,除非我們有jdk7,否則基本上停留在基於輪詢的解決方案(即每隔XX秒更新一次索引)。
注意JDK7(除了文件夾監視)將在迭代文件提供巨大的性能提升(目前基於文件的操作都是很慢相比,你可以原生要做什麼)。
+0
我將等待jdk 7 – 2010-02-03 21:54:04
3
如果你想知道,你已經知道存在一個特定的文件是否已不存在,你可以只使用File.exists()
。有目錄觀察程序包會在文件添加/刪除/移動時觸發事件,但在文件系統中的每個目錄上運行目錄觀察程序線程聽起來效率非常低。
1
我認爲java 7可能有你正在尋找的東西,一旦它是發佈。請參閱以下link
相關問題
- 1. 從Netbeans項目中刪除文件,但不是從硬盤中刪除文件
- 2. 我們是否可以在運行時修改XML文件,如刪除,使用SAX解析器更新節點?
- 3. 我可以在.jar文件而不是.java上運行fortify嗎?
- 4. 如何判斷文件是否使用API從Google雲端硬盤中刪除?
- 5. 程序運行期間,C變量是否可以隨時刪除或刪除?
- 6. 是否可以直接在特定Google雲端硬盤中上傳文件?
- 7. 確定文件或目錄在哪個硬盤上?
- 8. 刪除文件在硬盤由R
- 9. C#Winforms - 使用特定文件名刪除硬盤上的文件夾?
- 10. 我們是否可以在運行時自定義電子郵件內容
- 11. Chrome擴展可以修改我們硬盤中的文件嗎?
- 12. 我們是否可以從Google雲端硬盤中獲取所有照片
- 13. 我們可以從pod文件中刪除文件嗎?
- 14. 從joomla中刪除上傳的文件時,它們是否被刪除?
- 15. 是否可以使用PHP從PDF文件中刪除密碼?
- 16. 是否可以使用PHP從SWF文件中刪除actionScript?
- 17. 是否可以在不可選擇的行上刪除'對勾'
- 18. 我們可以使用的硬盤空間用於JVM內存
- 19. 是否可以從移動硬盤取回我的私鑰?
- 20. 在MSBuild中可以確定我是否在Visual Studio中運行
- 21. ,我們是否可以在java中
- 22. Java運行時確定JDK功能是否可用
- 23. 是否可以使用Javascript(未在瀏覽器中運行)檢查磁盤上是否存在文件?
- 24. 在瀏覽器中運行Java applet時,是否可以刪除對話需求?
- 25. 是否可以使用已刪除的模式運行makemigrations?
- 26. 是否可以在運行時修改可執行文件?
- 27. 是否可以在運行時使用Java切換Class版本?
- 28. 當我刪除/重命名相應的.java文件時,是否可以告訴maven-compiler-plugin刪除.class文件?
- 29. 我們可以控制我們的應用是否顯示在Google雲端硬盤Android應用中
- 30. 是否可以確定鍵盤振動?
你不需要大膽的文字。它只是讓它成爲閱讀的眼睛疲勞。 – 2009-12-21 00:38:22
你想讓它運行的任何特定操作系統? – TofuBeer 2009-12-21 01:00:37