我试图通过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无关,因为即时消息成功写入文件,因此我具有必要的安全权限。有任何想法吗…?
首先,您可能应该使用SecurityManager。
SecurityManager
FilePermission应对目录很好。您可能希望包括下面包含的所有文件和目录。最后使用/-。使用/*非递归包含的文件和目录。
FilePermission
/-
/*
checkPermission如果ProtectionDomain当前访问控制上下文(acc)的任何帧(或其框架)没有所需的权限,将抛出异常。
checkPermission
ProtectionDomain
FilePermission 与操作系统权限无关。