小编典典

具有AccessController.checkPermission的Java目录权限

java

我试图通过checkPermission()方法获取目录权限,如代码中所示。

private static boolean dirPermissions(String dir, String perm) {
    try {
        AccessController.checkPermission(new FilePermission(dir, perm));
        return true;
    } catch (AccessControlException e) {
        return false;
    }
}

大多数相关File类方法(例如canRead(),canWrite()等)的java(<=
6)文档都表明它们对文件有用,但对目录却没有帮助(这里我错了吗?)。

我没有在服务器上运行代码,也没有运行多个线程,并且需要在它们之间保存acc,或者做任何棘手的事情,这很简单-
使用本地运行的jvm和代码重新安装eclipse,并且可以访问本地目录。

但是,checkPermission总是对显然具有jvm读/写权限的文件夹抛出异常(即,拒绝访问),因为我可以设法创建文件夹并写入文件等。

大概与本地java.policy无关,因为即时消息成功写入文件,因此我具有必要的安全权限。有任何想法吗…?


阅读 287

收藏
2020-11-30

共1个答案

小编典典

首先,您可能应该使用SecurityManager

FilePermission应对目录很好。您可能希望包括下面包含的所有文件和目录。最后使用/-。使用/*非递归包含的文件和目录。

checkPermission如果ProtectionDomain当前访问控制上下文(acc)的任何帧(或其框架)没有所需的权限,将抛出异常。

FilePermission 与操作系统权限无关。

2020-11-30