java.io

接口
异常
错误
java.lang.Object
  继承者 java.security.Permission
      继承者 java.io.FilePermission
所有已实现的接口:
Serializable, Guard

public final class FilePermission
     
extends Permission
implements Serializable

此类表示对文件和目录的访问。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 运行时环境)进行替换。

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

从以下版本开始:
1.2
另请参见:
Permission, Permissions, PermissionCollection

构造方法摘要
FilePermission(String path, String actions)
          创建具有指定操作的新 FilePermission 对象,path 是文件或目录的路径名,actions 包含对文件或目录授予的所需操作的列表,该列表由逗号分隔。
 
方法摘要
 boolean equals(Object obj)
          检查两个 FilePermission 对象是否相等。
 String getActions()
          返回操作的“规范化字符串表示形式”。
 int hashCode()
          返回此对象的哈希码值。
 boolean implies(Permission p)
          检查 FilePermission 对象是否“隐含”指定的权限。
 PermissionCollection newPermissionCollection()
          返回用于存储 FilePermission 对象的新 PermissionCollection 对象。
 
从类 java.security.Permission 继承的方法
checkGuard, getName, toString
 
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

FilePermission

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

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

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

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

参数:
path - 文件/目录的路径名。
actions - 操作字符串。
抛出:
IllegalArgumentException - 如果 actions 为 null 或空,或者包含一个除指定可能的操作之外的操作。
方法详细信息

implies

public boolean implies(Permission p)
检查 FilePermission 对象是否“隐含”指定的权限。

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

  • p 是 FilePermission 的一个实例,

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

  • 此对象的路径名隐含 p 的路径名。例如,"/tmp/*" 隐含 "/tmp/foo",因为 "/tmp/*" 涵盖 "/tmp" 目录中所有文件,包括命名为 "foo" 的文件。

指定者:
Permission 中的 implies
参数:
p - 所要检查的权限。
返回:
如果指定的权限不为 null 并且此对象隐含该权限,则返回 true;否则返回 false

equals

public boolean equals(Object obj)
检查两个 FilePermission 对象是否相等。检查 obj 是否是一个 FilePermission,是否与此对象具有相同的路径名和操作。

指定者:
Permission 中的 equals
参数:
obj - 要与此对象进行相等性测试的对象。
返回:
如果 obj 是一个 FilePermission,并且与此 FilePermission 对象具有相同的路径名和操作,则返回 true;否则返回 false
另请参见:
Object.hashCode(), Hashtable

hashCode

public int hashCode()
返回此对象的哈希码值。

指定者:
Permission 中的 hashCode
返回:
此对象的哈希码值。
另请参见:
Object.equals(java.lang.Object), Hashtable

getActions

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

指定者:
Permission 中的 getActions
返回:
操作的规范化字符串表示形式。

newPermissionCollection

public PermissionCollection newPermissionCollection()
返回用于存储 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 对象恰当地处理。

覆盖:
Permission 中的 newPermissionCollection
返回:
适合存储 FilePermissions 的新 PermissionCollection 对象。