我正在尝试使用以下代码段来检查给定文件的权限。
public static void main(String[] args) {
try{
FilePermission fp = new FilePermission("E:/test.txt", "read");
AccessController.checkPermission(fp);
System.out.println("Ok to open socket");
} catch (AccessControlException ace) {
System.out.println(ace);
}
因此,当我运行它时,它会给我以下异常:
java.security.AccessControlException: access denied ("java.io.FilePermission" "E:/test.txt" "read")
所有权利都在文件中启用,但它会抛出拒绝访问权限。
答案 0 :(得分:4)
使用以下代码段检查您是否可以阅读该文件:
boolean canRead = new java.io.File("E:/test.txt").canRead();
File.canRead
检查SecurityManager(如果有的话)是否允许读取文件和,如果您在文件系统中具有读取权限。
如果存在暗示权限的安全上下文,则使用AccessController.checkPermission(fp)
只会抛出异常。当您像在示例中一样启动Java应用程序时,情况并非如此。