public interface JavaFileManager extends Closeable, Flushable, OptionChecker
构建新的javafileobjects时,档案管理员必须确定在哪里创建。例如,如果一个文件管理器管理一个文件系统上的常规文件,它将最有可能有一个当前/工作目录作为默认位置时,创建或查找文件。可以向一个文件管理器提供一些提示,以在哪里创建文件。任何文件管理器可能会选择忽略这些提示。
在这个接口使用类名称的一些方法。类的名字必须在java虚拟机内部形成完全合格的类和接口名称。为了方便“,”和“/”是可以互换的。内部形式是在The Java™ Virtual Machine Specification四章定义。
Discussion: this means that the names "java/lang.package-info", "java/lang/package-info", "java.lang.package-info", are valid and equivalent. Compare to binary name as defined in The Java™ Language Specification, section 13.1 "The Form of a Binary".
名称是显着的情况下。所有的名字都应该视为区分大小写。例如,一些文件系统具有大小写不区分大小写的文件名。代表该文件的对象应该采用File.getCanonicalFile()
或类似方法保存情况。如果系统没有注意到,文件对象必须使用其他方法来保存情况。
相对名称:在这个接口中的一些方法使用的相对名称。一个相对的名称是一个非空的,非空序列的路径段由“/”分隔。“或”“是无效的路径段。一个有效的相对名称必须匹配RFC 3986“路径根”的规则,部分 3.3。非正式地说,这应该是真的:
URI。create(relativename)。z-d386c3c4-8a08-4677-9d1d- bdedfdc4a5f4()。z-269e02c1-86d4-44c7-b526- b458a7a9e47c()等于(relativename)。
在这个接口的所有方法可能引发SecurityException。
此接口的一个对象不需要支持多线程访问,也就是说,要同步。然而,它必须支持此对象创建的不同的文件对象的并发访问。
注:实现这一要求的后果是,一个平凡的实现输出到JarOutputStream不是充分实现。这是,而不是创建一个对象,返回jaroutputstream直接的内容必须被缓存到关闭,然后写入jaroutputstream。
除非明确允许,在这个接口的所有方法可能如果null
论点抛出一个NullPointerException。
JavaFileObject
,
FileObject
Modifier and Type | Interface and Description |
---|---|
static interface |
JavaFileManager.Location
文件对象位置的接口。
|
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
-如果真有“分包”
IOException
如果发生I/O错误,或者如果
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
如果发生I/O错误,或者如果
close()
被称为这个文件管理器无法打开
IllegalStateException
-如果
close()
被称为这个文件管理器无法打开
JavaFileObject getJavaFileForOutput(JavaFileManager.Location location, String className, JavaFileObject.Kind kind, FileObject sibling) throws IOException
可选地,这个文件管理器可能会考虑该兄弟姐妹作为一个提示,用于在哪里放置输出。这个提示的确切语义是未指定的。JDK的编译器javac,例如,将类文件在同一目录,源文件,除非提供一个类文件输出目录。为了促进这一行为,javac可能提供源文件作为兄弟时调用此方法。
location
-位置
className
-类的名称
kind
-文件类型,必须是一个
SOURCE
或
CLASS
sibling
-一个文件作为提示可能
null
安置;
IllegalArgumentException
如果兄弟不知道这个文件管理器,或者如果位置是不知道这个文件管理器和文件管理器不支持未知地点,或者是无效的
IOException
如果发生I/O错误,或者如果
close()
被称为这个文件管理器无法打开
IllegalStateException
-
close()
被称为这个文件管理器无法打开
FileObject getFileForInput(JavaFileManager.Location location, String packageName, String relativeName) throws IOException
如果返回的对象是一个source或class文件,它必须是JavaFileObject
实例。
非正式的文件,此方法返回的对象是位于的位置,包名称的连接,和相对的名字。例如,查找文件的属性“资源/编译器。属性”包中的“COM。太阳。工具。javac”在SOURCE_PATH位置,这种方法可以称为像这样:
getfileforinput(source_path,“COM。太阳。工具。javac”、“资源/编译器。属性”);
如果调用执行的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
如果发生I/O错误,或者如果
close()
被称为这个文件管理器无法打开
IllegalStateException
-如果
close()
被称为这个文件管理器无法打开
FileObject getFileForOutput(JavaFileManager.Location location, String packageName, String relativeName, FileObject sibling) throws IOException
可选地,这个文件管理器可能会考虑该兄弟姐妹作为一个提示,用于在哪里放置输出。这个提示的确切语义是未指定的。JDK的编译器javac,例如,将类文件在同一目录,源文件,除非提供一个类文件输出目录。为了促进这一行为,javac可能提供源文件作为兄弟时调用此方法。
如果返回的对象是一个source或class文件,它必须是JavaFileObject
实例。
非正式的文件,此方法返回的对象是位于的位置,包名称的连接,和相关的名称或旁边的兄弟的说法。看到一个例子getFileForInput
。
location
-位置
packageName
-包的名称
relativeName
-相关名称
sibling
-一个文件作为提示可能
null
安置;
IllegalArgumentException
如果兄弟不知道这个文件管理器,或者如果位置是不知道这个文件管理器和文件管理器不支持未知地点,或者如果
relativeName
无效
IOException
如果发生I/O错误,或者如果
close()
被称为这个文件管理器无法打开
IllegalStateException
-如果
close()
被称为这个文件管理器无法打开
void flush() throws IOException
flush
接口
Flushable
IOException
如果发生I/O错误
close()
void close() throws IOException
close
接口
AutoCloseable
close
接口
Closeable
IOException
如果发生I/O错误
flush()
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.