2012-07-31 58 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