|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
public interface JavaFileManager
Java™ プログラミング言語のソースファイルやクラスファイルを操作するツール向けのファイルマネージャーです。このコンテキストでは、「ファイル」という語で、通常ファイルとその他のデータソースを抽象的に表します。
ファイルマネージャーで新しい JavaFileObject を構築する際は、それらをどこに作成するかを指定する必要があります。たとえば、ファイルマネージャーを使ってファイルシステム上の通常ファイルを管理する場合は、現在のディレクトリ (作業ディレクトリ) を、ファイルの作成や検索を行うデフォルトの場所として使用するのが一般的です。ファイルマネージャーには、ファイルの作成場所を示すヒントが多数提供される可能性があります。これらのヒントを無視するように、ファイルマネージャーを設定することもできます。
このインタフェースに含まれる一部のメソッドは、クラス名を使用します。これらのクラス名は、『Java 仮想マシン仕様』で定義されている内部形式で、完全指定のクラス名およびインタフェース名として指定する必要があります。便宜上、「.」と「/」は交換可能です。内部形式の定義については、『Java 仮想マシン仕様』の第 4 章を参照してください。
解説: この場合、「java/lang.package-info」、「java/lang/package-info」、「java.lang.package-info」の 3 種類の名前がすべて有効で、等価であることになります。『Java 言語仕様 (JLS)』のセクション 13.1「The Form of a Binary」に定義されたバイナリ名と比較してください。
名前の大文字と小文字を正しく区別する必要があります。すべての名前の大文字と小文字が区別されます。たとえば、ファイル名の大文字と小文字の区別は行わないが、その違いを認識するファイルシステムがあるとします。この場合、File.getCanonicalFile()
または同様の手段を使って、ファイルオブジェクト (ファイルを表す) の大文字と小文字の区別を保持するようにします。システムが大文字と小文字の区別を認識しない場合は、その他の手段で、ファイルオブジェクトの大文字と小文字の区別を保持する必要があります。
相対名:このインタフェースに含まれる一部のメソッドは、相対名を使用します。相対名は、一連のパスセグメント (null 以外、空以外) を「/」で区切った形式の名前です。「.」または「..」は無効なパスセグメントです。有効な相対名は、RFC 3986 のセクション 3.3 に定義されている「path-rootless」の規則に準拠している必要があります。非公式には、次の条件が true になるようにします。
URI.create(relativeName).normalize().getPath().equals(relativeName)
このインタフェースに含まれるすべてのメソッドは、SecurityException をスローする可能性があります。
このインタフェースのオブジェクトは、マルチスレッドアクセスをサポートしていなくてもかまいません。つまり、同期化は必要ありません。ただし、このオブジェクトによって作成された複数のファイルオブジェクトへの並行アクセスはサポートしている必要があります。
実装にあたっての注意: この要件があるため、JarOutputStream への出力の単純な実装では、実装として不十分です。そこで、JarOutputStream を直接返す JavaFileObject を作成するのではなく、コンテンツをキャッシュに格納し、終了したら JarOutputStream に書き込むようにします。
明示的に許可されていない場合に引数として null
が指定されると、このインタフェースに含まれるすべてのメソッドは NullPointerException をスローする可能性があります。
JavaFileObject
,
FileObject
入れ子のクラスの概要 | |
---|---|
static interface |
JavaFileManager.Location
ファイルオブジェクトの場所のインタフェースです。 |
メソッドの概要 | |
---|---|
void |
close()
このファイルマネージャーによって直接的または間接的に開かれたリソースがあれば、それを解放します。 |
void |
flush()
このファイルマネージャーによって直接的または間接的に開かれた出力用リソースがあれば、それをフラッシュします。 |
ClassLoader |
getClassLoader(JavaFileManager.Location location)
指定された場所からプラグインをロードするクラスローダーを取得します。 |
FileObject |
getFileForInput(JavaFileManager.Location location,
String packageName,
String relativeName)
指定された場所にある、特定のパッケージ内の特定の相対名を表す入力用ファイルオブジェクトを取得します。 |
FileObject |
getFileForOutput(JavaFileManager.Location location,
String packageName,
String relativeName,
FileObject sibling)
指定された場所にある、特定のパッケージ内の特定の相対名を表す出力用ファイルオブジェクトを取得します。 |
JavaFileObject |
getJavaFileForInput(JavaFileManager.Location location,
String className,
JavaFileObject.Kind kind)
指定された場所にある、特定の種類の特定のクラスを表す入力用ファイルオブジェクトを取得します。 |
JavaFileObject |
getJavaFileForOutput(JavaFileManager.Location location,
String className,
JavaFileObject.Kind kind,
FileObject sibling)
指定された場所にある、特定の種類の特定のクラスを表す出力用ファイルオブジェクトを取得します。 |
boolean |
handleOption(String current,
Iterator<String> remaining)
1 つのオプションを処理します。 |
boolean |
hasLocation(JavaFileManager.Location location)
このファイルマネージャーにとって既知の場所であるかどうかを判断します。 |
String |
inferBinaryName(JavaFileManager.Location location,
JavaFileObject file)
場所に基づいてファイルオブジェクトのバイナリ名を推測します。 |
boolean |
isSameFile(FileObject a,
FileObject b)
2 つのファイルオブジェクトを比較し、これらによって表される配下のオブジェクトが同じである場合は true を返します。 |
Iterable<JavaFileObject> |
list(JavaFileManager.Location location,
String packageName,
Set<JavaFileObject.Kind> kinds,
boolean recurse)
指定の場所の指定の基準に一致するすべてのファイルオブジェクトを一覧表示します。 |
インタフェース javax.tools.OptionChecker から継承されたメソッド |
---|
isSupportedOption |
メソッドの詳細 |
---|
ClassLoader getClassLoader(JavaFileManager.Location location)
ANNOTATION_PROCESSOR_PATH
のクラスローダーを要求します。
location
- 場所
null
SecurityException
- 現在のセキュリティーコンテキストでクラスローダーを作成できない場合
IllegalStateException
- close()
が呼び出され、このファイルマネージャーを再度開くことができない場合Iterable<JavaFileObject> list(JavaFileManager.Location location, String packageName, Set<JavaFileObject.Kind> kinds, boolean recurse) throws IOException
注:このファイルマネージャーにとって未知の場所が指定された場合も、null
が返されることはありません。また、例外が生成されることもありません。
location
- 場所packageName
- パッケージ名kinds
- これらの種類のオブジェクトのみ返すrecurse
- true の場合、「サブパッケージ」も含まれる
IOException
- 入出力エラーが発生した場合、または close()
が呼び出され、このファイルマネージャーを再度開くことができない場合
IllegalStateException
- close()
が呼び出され、このファイルマネージャーを再度開くことができない場合String inferBinaryName(JavaFileManager.Location location, JavaFileObject file)
location
- 場所file
- ファイルオブジェクト
null
IllegalStateException
- close()
が呼び出され、このファイルマネージャーを再度開くことができない場合boolean isSameFile(FileObject a, FileObject b)
a
- ファイルオブジェクトb
- ファイルオブジェクト
IllegalArgumentException
- どちらかの引数が別のファイルマネージャーで作成された引数であり、このファイルマネージャーが外部ファイルオブジェクトをサポートしていない場合boolean handleOption(String current, Iterator<String> remaining)
current
がこのファイルマネージャーのオプションである場合は、remaining
からそのオプションに対するすべての引数を使用し、true を返します。そうでない場合は false を返します。
current
- 現在のオプションremaining
- 残りのオプション
IllegalArgumentException
- このファイルマネージャーに対するこのオプションが不正に使用された場合
IllegalStateException
- close()
が呼び出され、このファイルマネージャーを再度開くことができない場合boolean hasLocation(JavaFileManager.Location location)
location
- 場所
JavaFileObject getJavaFileForInput(JavaFileManager.Location location, String className, JavaFileObject.Kind kind) throws IOException
location
- 場所className
- クラスの名前kind
- ファイルの種類。SOURCE
または CLASS
null
が返される可能性がある
IllegalArgumentException
- このファイルマネージャーにとって未知の場所が指定され、ファイルマネージャーが未知の場所をサポートしていない場合、またはファイルの種類が有効でない場合
IOException
- 入出力エラーが発生した場合、または close()
が呼び出され、このファイルマネージャーを再度開くことができない場合
IllegalStateException
- close()
が呼び出され、このファイルマネージャーを再度開くことができない場合JavaFileObject getJavaFileForOutput(JavaFileManager.Location location, String className, JavaFileObject.Kind kind, FileObject sibling) throws IOException
このファイルマネージャーは、オプションとして、兄弟ウィジェットを出力先のヒントとして使用する可能性があります。このヒントの厳密なセマンティクスは指定されません。たとえば Sun のコンパイラ javac は、クラスファイルの出力ディレクトリが指定されていない場合、ソースファイルと同じディレクトリにクラスファイルを配置します。この処理を簡便化するため、javac は、このメソッドを呼び出すとき、ソースファイルを兄弟ウィジェットとして指定することがあります。
location
- 場所className
- クラスの名前kind
- ファイルの種類。SOURCE
または CLASS
sibling
- 配置のヒントとして使用されるファイルオブジェクト。null
も可
IllegalArgumentException
- このファイルマネージャーにとって未知の兄弟ウィジェットが指定された場合、このファイルマネージャーにとって未知の場所が指定され、ファイルマネージャーが未知の場所をサポートしていない場合、またはファイルの種類が有効でない場合
IOException
- 入出力エラーが発生した場合、または close()
が呼び出され、このファイルマネージャーを再度開くことができない場合
IllegalStateException
- close()
が呼び出され、このファイルマネージャーを再度開くことができない場合FileObject getFileForInput(JavaFileManager.Location location, String packageName, String relativeName) throws IOException
返されたオブジェクトがソースファイルまたはクラスファイルを表す場合、JavaFileObject
のインスタンスである必要があります。
非公式には、このメソッドで返されるファイルオブジェクトは、場所、パッケージ名、および相対名を連結した場所にあります。たとえば、SOURCE_PATH にある com.sun.tools.javac パッケージ内のプロパティーファイル resources/compiler.properties を探している場合、次のようにしてこのメソッドを呼び出すことができます。
getFileForInput(SOURCE_PATH, "com.sun.tools.javac", "resources/compiler.properties");
この呼び出しが Windows 上で実行され、SOURCE_PATH が "C:\Documents and Settings\UncleBob\src\share\classes"
に設定されていた場合、有効な結果は、ファイル "C:\Documents and Settings\UncleBob\src\share\classes\com\sun\tools\javac\resources\compiler.properties"
を表すファイルオブジェクトになります。
location
- 場所packageName
- パッケージ名relativeName
- 相対名
null
が返される可能性がある
IllegalArgumentException
- このファイルマネージャーにとって未知の場所が指定され、ファイルマネージャーが未知の場所をサポートしていない場合、または relativeName
が有効でない場合
IOException
- 入出力エラーが発生した場合、または close()
が呼び出され、このファイルマネージャーを再度開くことができない場合
IllegalStateException
- close()
が呼び出され、このファイルマネージャーを再度開くことができない場合FileObject getFileForOutput(JavaFileManager.Location location, String packageName, String relativeName, FileObject sibling) throws IOException
このファイルマネージャーは、オプションとして、兄弟ウィジェットを出力先のヒントとして使用する可能性があります。このヒントの厳密なセマンティクスは指定されません。たとえば Sun のコンパイラ javac は、クラスファイルの出力ディレクトリが指定されていない場合、ソースファイルと同じディレクトリにクラスファイルを配置します。この処理を簡便化するため、javac は、このメソッドを呼び出すとき、ソースファイルを兄弟ウィジェットとして指定することがあります。
返されたオブジェクトがソースファイルまたはクラスファイルを表す場合、JavaFileObject
のインスタンスである必要があります。
非公式には、このメソッドで返されるファイルオブジェクトは、場所、パッケージ名、および相対名を連結した場所か、兄弟引数の次にあります。例は、getFileForInput
を参照してください。
location
- 場所packageName
- パッケージ名relativeName
- 相対名sibling
- 配置のヒントとして使用されるファイルオブジェクト。null
も可
IllegalArgumentException
- このファイルマネージャーにとって未知の兄弟ウィジェットが指定された場合、このファイルマネージャーにとって未知の場所が指定され、ファイルマネージャーが未知の場所をサポートしていない場合、または relativeName
が有効でない場合
IOException
- 入出力エラーが発生した場合、または close()
が呼び出され、このファイルマネージャーを再度開くことができない場合
IllegalStateException
- close()
が呼び出され、このファイルマネージャーを再度開くことができない場合void flush() throws IOException
Flushable
内の flush
IOException
- 入出力エラーが発生した場合close()
void close() throws IOException
Closeable
内の close
IOException
- 入出力エラーが発生した場合flush()
|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。