我想检查文件夹的写入权限。文件夹可能是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");
}
答案 0 :(得分:1)
您的解决方案不相同。第一个检查Java沙箱是否授予对文件的写访问权。由于您似乎没有使用安全管理器,因此毫无意义。第二个检查操作系统是否授予访问权限。不一样。