我們的一位客戶正在使用一些Novel安全軟件,該軟件有時會鎖定我們軟件創建的一些.class文件。當這種情況發生時,這會對他們造成一些令人討厭的問題,並且我正試圖研究一種解決方法,我們可以添加到我們的錯誤處理中以解決此問題。我想知道是否有可用於檢測文件是否被鎖定的java api中的任何調用,如果是,則解鎖它。使用java API鎖定和解鎖文件
4
A
回答
1
在嘗試寫入文件之前,您可以使用File.canWrite()檢查您的Java應用程序是否可以寫入該文件。但是,如果第三方應用程序將文件鎖定在File.canWrite()檢查與應用程序實際嘗試寫入之間,您仍可能遇到問題。出於這個原因,我會編寫你的應用程序來簡單地繼續並嘗試寫入文件並捕獲文件被鎖定時引發的任何異常。我不相信有一種本地Java方式來解鎖已被另一個應用程序鎖定的文件。你可以將一個shell命令作爲特權用戶來執行,但是這看起來不夠優雅。
0
File.canWrite()具有Asaph提到的競態條件。您可以嘗試FileChannel.lock()並獲取文件的排他鎖。只要.class位於本地磁盤上,這應該可以正常工作(文件鎖定可能會在聯網磁盤上出現問題)。
或者,根據發現的.class名稱的方式,您可以每次爲.class創建一個新名稱;那麼如果防病毒軟件鎖定了您的初始班級,您仍然可以創建新的班級。
相關問題
- 1. 在Ubuntu中使用C API鎖定和解鎖文件LInux
- 2. 解鎖鎖定的java文件Android studio
- 3. 從輸入文件鎖定和解鎖
- 4. 使用box api,我如何鎖定或解鎖文件?
- 5. 用VBA鎖定和解鎖
- 6. 用PhpStorm鎖定/解鎖文件
- 7. 使用VBA鎖定和解鎖
- 8. 使用jQuery鎖定和解鎖頁面?
- 9. Java文件鎖定
- 10. 屏幕鎖定和解鎖
- 11. 正確的鎖定/解鎖使用Java的可重入鎖
- 12. 用於iPhone鎖定和解鎖的UIEvent?
- 13. 使用Java鎖定屬性文件
- 14. Java鎖和解鎖不同的線程
- 15. 連貫鎖定解鎖使用
- 16. 使用Thread.Sleep解決鎖定死鎖
- 17. 關於屏幕鎖定和解鎖
- 18. jqGrid:如何鎖定和解鎖網格?
- 19. 文件鎖定和刪除
- 20. 使用C#鎖定文件#
- 21. 鎖定和解鎖遊戲關卡android
- 22. Java文件鎖定和Windows - 鎖不是「絕對」?
- 23. 使用disableKeyguard和reenableKeyguard來鎖定和解鎖
- 24. 使用fnctl()鎖定和解鎖文件進行讀寫(多個進程)
- 25. MVC鎖定和解鎖一個呼叫
- 26. 鎖定和解鎖屏幕 - iPad
- 27. 鎖定和解鎖dispatch_queue_t異步任務
- 28. 如何鎖定和解鎖jqGrid?
- 29. 級別鎖定和解鎖統一
- 30. ldap - 鎖定/解鎖帳戶
你是什麼意思「鎖定文件」?你的意思是軟件使用.class文件,所以它們不能更改?或者你的意思是像羊羣(2)? – abyx 2009-10-12 17:36:02