2012-07-31 118 views
2

如何檢查應用程序是否有權讀取或寫入文件系統上的特定目錄。我想這一點:AccessController checkPermission總是拋出異常

try { 
    AccessController.checkPermission(new FilePermission(files[i] 
      .getAbsolutePath(), "read,write")); 
} 
catch (Exception e) { 
    System.out.println(e.toString()); 
} 

,但它總是拋出異常,並輸出:

java.security.AccessControlException: access denied ("java.io.FilePermission" "C:\Dell" "read") 
java.security.AccessControlException: access denied ("java.io.FilePermission" "C:\Documents and Settings" "read") 
java.security.AccessControlException: access denied ("java.io.FilePermission" "C:\glut-3.7.6" "read") 

有我丟失的東西嗎?

回答

1

似乎AccessController總是在您沒有權限時拋出異常。你可以通過捕獲SecurityException來處理這個問題。

更好的解決方案,以java.io.File.canRead(),java.io.File.canWrite()方法檢查讀寫權限。

+0

我試過了java.io.File.canRead(),但它對每個目錄都返回true。 – Jackson 2012-07-31 11:58:17

+0

其實,我認爲這可能會工作,如果我檢查目錄中的文件canRead。 – Jackson 2012-07-31 12:03:12