FilePermission详解

本文介绍FilePermission类的使用方法,包括如何创建文件权限对象、检查权限相等性、判断权限是否被隐含,以及如何获取权限的操作字符串表示形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此类表示对文件和目录的访问。FilePermission 由路径名和对该路径名有效的操作集合组成。

路径名是授予指定操作的文件或目录的路径名。以 "/*"(其中 "/" 是文件分隔符字符,即 File.separatorChar)结尾的路径名指示包含在该目录中的所有文件和目录。以 "/-" 结尾的路径名(递归地)指示包含在该目录中的所有文件和子目录。由特殊标记 "<<ALL FILES>>" 组成的路径名可匹配任何文件。

注:由单个 "*" 组成的路径名指示当前目录中的所有文件,而由单个 "-" 组成的路径名指示当前目录中的所有文件,并(递归地)指示包含在当前目录中的所有文件和子目录。

将所要授予的操作以字符串的形式传递给构造方法,该字符串包含由一个或多个用逗号分隔的关键字组成的列表。可能的关键字有 "read"、"write"、"execute" 和 "delete"。其含义定义如下:

read
读权限
write
写权限
execute
执行权限。允许调用  Runtime.exec。对应于  SecurityManager.checkExec
delete
删除权限。允许调用  File.delete。对应于  SecurityManager.checkDelete

处理前会将操作字符串转换为小写字母。

在授予 FilePermission 权限时要小心。在对各种文件和目录授予读访问权和(尤其是)写访问权时,一定要慎重。对写操作授予 "<<ALL FILES>>" 权限特别危险。这允许对整个文件系统进行写操作。事实上它甚至允许对系统中的二进制文件(包括 JVM 运行时环境)进行替换。

请注意:代码总是可以读取自身所在目录(或该目录的子目录)中的文件,不需要对其进行显式授权。

version1.80 05/11/17
since1.2
serial
en
exclude
See alsojava.security.Permissionjava.security.Permissionsjava.security.PermissionCollection

Constructors
publicFilePermission(String path, String actions)
zh_cn
创建具有指定操作的新 FilePermission 对象,path 是文件或目录的路径名,actions 包含对文件或目录授予的所需操作的列表,该列表由逗号分隔。可能的操作有 "read"、"write"、"execute" 和 "delete"。

以 "/*"(其中 "/" 是文件分隔符,即 File.separatorChar)结尾的路径名指示所有包含在该目录中的文件和目录。以 "/-" 结尾的路径名(递归地)指示包含在该目录中的所有文件和子目录。特殊路径名 "<<ALL FILES>>" 与任意文件都匹配。

由单个 "*" 组成的路径名指示当前目录中的所有文件,而由单个 "-" 组成的路径名指示当前目录中的所有文件,并(递归地)指示包含在当前目录中的所有文件和子目录。

包含空字符串的路径名表示一个空路径。

path
zh_cn
文件/目录的路径名。
actions
zh_cn
操作字符串。
ThrowsIllegalArgumentException: 
zh_cn
如果 actions 为 null 或空,或者包含一个除指定可能的操作之外的操作。

Methods
public booleanequals(Object obj)
zh_cn
检查两个 FilePermission 对象是否相等。检查 obj 是否是一个 FilePermission,是否与此对象具有相同的路径名和操作。
obj
zh_cn
要与此对象进行相等性测试的对象。
return
zh_cn
如果 obj 是一个 FilePermission,并且与此 FilePermission 对象具有相同的路径名和操作,则返回true;否则返回 false
public inthashCode()
zh_cn
返回此对象的哈希码值。
return
zh_cn
此对象的哈希码值。
public booleanimplies(Permission p)
zh_cn
检查 FilePermission 对象是否“隐含”指定的权限。

更明确地说,如果此方法满足以下条件,则返回 true:

  • p 是 FilePermission 的一个实例,

  • p 的操作是此对象的操作的一个真子集,并且

  • 此对象的路径名隐含 p 的路径名。例如,"/tmp/*" 隐含 "/tmp/foo",因为 "/tmp/*" 涵盖 "/tmp" 目录中所有文件,包括命名为 "foo" 的文件。
p
zh_cn
所要检查的权限。
return
zh_cn
如果指定的权限不为 null 并且此对象隐含该权限,则返回 true;否则返回 false
public PermissionCollectionnewPermissionCollection()
zh_cn
返回用于存储 FilePermission 对象的新 PermissionCollection 对象。

FilePermission 对象必须以允许将它们按任意顺序插入集合的方式来存储,但同时也允许以有效(并一致)的方式实现 PermissionCollection 的 implies 方法。

例如,如果有两个 FilePermissions:

  1. "/tmp/-", &\quot;read"
  2. "/tmp/scratch/foo", "write"

并且您正利用 FilePermission 权限调用 implies 方法:

   "/tmp/scratch/foo", "read,write", 
 
那么 implies 函数必须对 "/tmp/-" 和 "/tmp/scratch/foo" 这两种权限都进行考虑,因此有效权限是 "read,write",并且 implies 返回 true。FilePermission 的 "implies" 语义由此 newPermissionCollection 方法返回的 PermissionCollection 对象恰当地处理。
return
zh_cn
适合存储 FilePermissions 的新 PermissionCollection 对象。

Properties
public StringgetActions()
zh_cn
返回操作的“规范化字符串表示形式”。也就是说,此方法总是以下列顺序返回存在的操作:read、write、execute、delete。例如,如果此 FilePermission 对象允许写和读操作,则调用 getActions 将返回字符串 "read,write"。
return
zh_cn
操作的规范化字符串表示形式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值