JavaTM 2 Platform
Std. Ed. v1.3

java.io
クラス FilePermission

java.lang.Object
  |
  +--java.security.Permission
        |
        +--java.io.FilePermission
すべての実装インタフェース:
Guard, Serializable

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 を許可するときには注意が必要です。さまざまなファイルおよびディレクトリへの読み込みアクセス、および特に書き込みアクセスを許可することによる影響を考えてください。書き込みアクションを持つ「<<ALL FILES>>」アクセス権は特に危険です。これは、ファイルシステム全体への書き込みアクセス権を許可します。事実上、JVM Runtime Environment を含む、システムバイナリの置換さえも許可します。

注: コードは、常にこのコードが格納されているディレクトリ (またはそのサブディレクトリ) 内からファイルを読み込むことができます。そのための明示的なアクセス権は必要ありません。

導入されたバージョン:
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 - アクション文字列
メソッドの詳細

implies

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

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

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

equals

public boolean equals(Object obj)
2 つの FilePermission オブジェクトが等しいかどうかを判定します。obj が FilePermission であり、このオブジェクトと同じパス名およびアクションを持つかどうかを調べます。

オーバーライド:
クラス Permission 内の equals
パラメータ:
obj - このオブジェクトと等しいかどうかが判定されるオブジェクト
戻り値:
obj が FilePermission であり、この FilePermission オブジェクトと同じパス名およびアクションを持つ場合は true

hashCode

public int hashCode()
このオブジェクトのハッシュコード値を返します。
オーバーライド:
クラス Permission 内の hashCode
戻り値:
このオブジェクトのハッシュコード値

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 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.