我在Eclipse中製作了一個Java程序。我開始使用Windows XP,但最近升級了。爲什麼我的程序不能刪除它在Win7下創建的文件?
作爲其保存機制的一部分,程序將設置寫入文件settings_new.sav
。如果這樣,它會刪除settings.sav
,並重新命名爲與舊名稱匹配。雖然它在winXP下工作(至少我認爲它確實,但我現在無法檢查),但在win7下,它無法刪除該文件,即使它是創建該文件的程序(儘管該程序是一個不同的實例)。
該文件被Eclipse拾取,並可以從那裏很愉快地刪除。我可以手動刪除它。我是我自己電腦上的管理員。該文件夾就在工作區文件夾內,並不在Program Files文件夾中(儘管如此,我不知道最終用戶是否會安裝它)。該程序可以創建和修改文件就好了。它不會拋出任何異常,我認爲如果它是win7阻止它的話。
任何想法?
它實際上是Windows中的文件鎖定機制。在Linux下,相同的代碼可能工作得很好。但我同意,您應該明確關閉文件的訪問權限,以使其在任何地方正常工作。 –
@MarkRobinson:有趣的是,我也應該在Linux中測試我的swing應用程序。似乎開發人員應該在操作系統級別而不是JVM上預見問題。 – PraveenMax
Windows和Linux有不同的文件鎖定語義。 Linux將允許你刪除一個你已經打開的文件進行編輯而不會被炸燬。然後,您可以創建一個具有相同名稱的新文件,而不會出現問題。在Windows中,如果文件在另一個進程中打開,它可以防止刪除文件。這種情況發生的具體情況很大程度上取決於它是如何打開的(通過方法/和訪問類型)。如果你有更多的問題,我建議你發佈一個針對Windows傢伙的新SO問題:) –