检查写入文件夹权限时的AccessControlException

时间:2014-06-25 13:43:14

标签: java access-control

我想检查文件夹的写入权限。文件夹可能是user.home或其他内容。无论我把哪个文件夹放到FilePermission上,我都会抓住这个......

一些代码:

public class Test {

public static void main(String[] args) {

    AccessController.checkPermission(new FilePermission(System.getProperty("user.home"), "write"));
    System.out.println("tadam");
}

}

堆栈跟踪:

Exception in thread "main" java.security.AccessControlException: access denied ("java.io.FilePermission" "C:\Users\AntonovDI" "write")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:366)
at java.security.AccessController.checkPermission(AccessController.java:560)
at ru.inversion.jinved.impl.Test.main(Test.java:19)

为什么?

我知道另一个解决方案,但我仍然对=)感兴趣

      Path userHomePath = Paths.get(System.getProperty("user.home")).toAbsolutePath();
        if (Files.isWritable(userHomePath)) {
            System.out.println("tadam");
        }

1 个答案:

答案 0 :(得分:1)

您的解决方案不相同。第一个检查Java沙箱是否授予对文件的写访问权。由于您似乎没有使用安全管理器,因此毫无意义。第二个检查操作系统是否授予访问权限。不一样。