我需要重命名一個文件(保存在同一個目錄中); 我似乎無法找到一種方法,看看我的程序具有所需的權限:java:檢查一個文件是否可以在windows下移動
Files.isWritable(directory) && Files.isWritable(oldFile);
總是返回true,羯羊或不運行的用戶有寫的文件,我想他們只是要檢查的權限(如果該文件是隻讀的,即使這違反了javadoc中所述的合同); 我不是一個安全管理器下運行,所以我不能叫
System.getSecurityManager.checkDelete(oldFile.toString());
我需要檢查的幾個文件重命名將(可能)成功,所以我不能只是嘗試和捕獲異常。
有沒有出路?顯然,一個便攜式解決方案將是可愛的,但我會解決一個特定於Windows的一個...
檢查此問題http://stackoverflow.com/questions/736859/how-to-determine-if-a-file-will-be-logically-moved-or-physically-moved – 2012-03-19 14:11:18
這可能會幫助你。 [http://stackoverflow.com/questions/736859/how-to-determine-if-a-file-will-be-logically-moved-or-physically-moved] – Java 2012-03-19 14:12:16
那麼,對於「可能」,我認爲' canWrite()' - 和'exists()' - 和'isDirectory()' - (以及類似的)方法就足夠了。如果你想重命名,我會推薦一個try-catch-block,因爲對於IO我總是使用try-catch-block(有很多事情可能會出錯)......用你的確切代碼,它會盡管如此,更容易給出更準確的答案。 – AlexS 2012-03-19 14:13:41