モジュール java.compiler
パッケージ javax.tools

インタフェースJavaFileManager

すべてのスーパー・インタフェース:
AutoCloseable, Closeable, Flushable, OptionChecker
既知のすべてのサブインタフェース:
StandardJavaFileManager
既知のすべての実装クラス:
ForwardingJavaFileManager

public interface JavaFileManager extends Closeable, Flushable, OptionChecker
Javaプログラミング言語のソース・ファイルおよびクラス・ファイルで動作するツールのファイル・マネージャ。 このコンテキストでは、ファイルという語で、通常ファイルとその他のデータ・ソースを抽象的に表します。

ファイル・マネージャで新しいJavaFileObjectを構築する際は、それらをどこに作成するかを指定する必要があります。 たとえば、ファイル・マネージャを使ってファイル・システム上の通常ファイルを管理する場合は、現在のディレクトリ(作業ディレクトリ)を、ファイルの作成や検索を行うデフォルトの場所として使用するのが一般的です。 ファイル・マネージャには、ファイルの作成場所を示すヒントが多数提供される可能性があります。 これらのヒントを無視するように、ファイル・マネージャを設定することもできます。

このインタフェースに含まれる一部のメソッドは、クラス名を使用します。 これらのクラス名は、『Java仮想マシン仕様』で定義されている内部形式で、完全指定のクラス名およびインタフェース名として指定する必要があります。 便宜上、「.」と「/」は交換可能です。 内部フォームは、「Java Virtual Machine仕様」の第4章 で定義されています。

解説: この場合、「java/lang.package-info」、「java/lang/package-info」、「java.lang.package-info」の3種類の名前がすべて有効で、等価であることになります。 「Java言語仕様」の13.1 "バイナリの形式"の項で定義されているバイナリ名と比較します。

名前の大文字と小文字を正しく区別する必要があります。 すべての名前の大文字と小文字が区別されます。 たとえば、ファイル名の大文字と小文字の区別は行わないが、その違いを認識するファイル・システムがあるとします。 この場合、File.getCanonicalFile()または同様の手段を使って、ファイル・オブジェクト(ファイルを表す)の大文字と小文字の区別を保持するようにします。 システムが大文字と小文字の区別を認識しない場合は、その他の手段で、ファイル・オブジェクトの大文字と小文字の区別を保持する必要があります。

相対名: このインタフェースに含まれる一部のメソッドは、相対名を使用します。 相対名は、一連のパス・セグメント(null以外、空以外)を「/」で区切った形式の名前です。「.」または「..」は無効なパス・セグメントです。 有効な相対名は、RFC 3986のセクション 3.3の「path-rootless」規則に従う必要があります。 非公式には、次の条件がtrueになるようにします。

URI.create(relativeName).normalize().getPath().equals(relativeName)

このインタフェースに含まれるすべてのメソッドは、SecurityExceptionをスローする可能性があります。

このインタフェースのオブジェクトは、マルチスレッド・アクセスをサポートしていなくてもかまいません。つまり、同期化は必要ありません。 ただし、このオブジェクトによって作成された複数のファイル・オブジェクトへの並行アクセスはサポートしている必要があります。

実装にあたってのノート: この要件があるため、JarOutputStreamへの出力の単純な実装では、実装として不十分です。 そこで、JarOutputStreamを直接返すJavaFileObjectを作成するのではなく、コンテンツをキャッシュに格納し、終了したらJarOutputStreamに書き込むようにします。

明示的に許可されていない場合に引数としてnullが指定されると、このインタフェースに含まれるすべてのメソッドはNullPointerExceptionをスローする可能性があります。

導入されたバージョン:
1.6
外部仕様
関連項目: