JavaTM Platform
Standard Ed. 6

java.io
クラス FilePermission

java.lang.Object
  上位を拡張 java.security.Permission
      上位を拡張 java.io.FilePermission
すべての実装されたインタフェース:
Serializable, Guard

public final class FilePermission
extends Permission
implements Serializable

このクラスは、ファイルまたはディレクトリへのアクセスを表します。FilePermission は、パス名と、そのパス名に対して有効なアクションの集合からなります。

パス名には、指定したアクションを許可するファイルまたはディレクトリのパス名を指定します。「/*」(「/」はファイル区切り文字 File.separatorChar) で終わるパス名は、そのディレクトリに含まれるすべてのファイルとディレクトリを表します。「/-」で終わるパス名は、そのディレクトリに含まれるすべてのファイルとサブディレクトリを (再帰的に) 表します。パス名に特殊なトークン「<<ALL FILES>>」を指定した場合は、すべてのファイルに一致します。

注:注: 1 つの「*」で構成されるパス名は、現在のディレクトリのすべてのファイルを示し、1 つの「-」で構成されるパス名は、現在のディレクトリのすべてのファイル、および (再帰的に) 現在のディレクトリに格納されているすべてのファイルおよびサブディレクトリを示します。

許可するアクションは、コンマで区切られた 1 個以上のキーワードのリストを内容とする文字列としてコンストラクタに引き渡されます。指定できるキーワードは、read、write、execute、および delete です。それぞれの意味は、次のように定義されます。

read
読み込みアクセス権
write
書き込みアクセス権
execute
実行権Runtime.exec を呼び出せるようになる。SecurityManager.checkExec に対応
delete
削除権File.delete を呼び出せるようになる。SecurityManager.checkDelete に対応

アクション文字列は、処理される前に小文字に変換されます。

FilePermission を許可する場合には注意してください。さまざまなファイルやディレクトリへの読み取りアクセス、特に書き込みアクセスを許可するとどうなるかをよく検討してください。write アクションに対して「<<ALL FILES>>」を指定するのは特に危険です。これは、ファイルシステム全体に対する書き込みを許可するということです。このような指定をすると、事実上、JVM 実行環境を含め、システムバイナリを置き換えることが可能になってしまいます。  

注 -コードは同一ディレクトリ (またはそのディレクトリのサブディレクトリ) 内のファイルを常に読み取ることができるので、読み取り時のアクセス権を明示する必要はありません。

導入されたバージョン:
1.2
関連項目:
Permission, Permissions, PermissionCollection

コンストラクタの概要
FilePermission(String path, String actions)
          指定されたアクションを持つ新しい FilePermission オブジェクトを作成します。
 
メソッドの概要
 boolean equals(Object obj)
          2 つの 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>>」は、すべてのファイルに一致します。  

注: 1 つの「*」で構成されるパス名は、現在のディレクトリのすべてのファイルを示し、1 つの「-」で構成されるパス名は、現在のディレクトリのすべてのファイル、および (再帰的に) 現在のディレクトリに格納されているすべてのファイルおよびサブディレクトリを示します。  

空の文字列を含むパス名は、空のパスを表します。

パラメータ:
path - ファイルまたはディレクトリのパス名
actions - アクション文字列
例外:
IllegalArgumentException - アクションが null の場合、空の場合、または指定された有効なアクション以外のアクションを含む場合
メソッドの詳細

implies

public boolean implies(Permission p)
この FilePermission オブジェクトに、指定されたアクセス権が含まれているかどうかを判定します。

つまり、このメソッドは次の場合に true を返します。

定義:
クラス Permission 内の implies
パラメータ:
p - チェック対象のアクセス権
戻り値:
指定されたアクセス権が null ではなく、このオブジェクトに含まれる場合は true、そうでない場合は false

equals

public boolean equals(Object obj)
2 つの 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 オブジェクトが write と read の両方のアクションを許可する場合、getActions を呼び出すと、「read,write」という文字列が返されます。

定義:
クラス Permission 内の getActions
戻り値:
アクションの標準的な文字列表現

newPermissionCollection

public PermissionCollection newPermissionCollection()
FilePermission オブジェクトを格納するための新しい PermissionCollection オブジェクトを返します。

FilePermission オブジェクトは、任意の順序でコレクションに挿入されるように、さらに PermissionCollection の implies メソッドが効率的に (および安定して) 実装されるように格納される必要があります。  

たとえば、次の 2 つの FilePermission があり、

  1. "/tmp/-", "read"
  2. "/tmp/scratch/foo", "read,write",
 

そして次の FilePermission で implies メソッドを呼び出す場合  

   "/tmp/scratch/foo", "read,write", 
 
implies 関数は、「/tmp/-」および「/tmp/scratch/foo」の両方のアクセス権を考慮しなければならず、そのため、実質的なアクセス権は「read,write」であり、implies は true を返します。FilePermission の「implies」セマンティクスは、この newPermissionCollection メソッドによって返される PermissionCollection オブジェクトによって正しく処理されます。

オーバーライド:
クラス Permission 内の newPermissionCollection
戻り値:
FilePermission を格納するのに適切な新規 PermissionCollection オブジェクト

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。