- 类型参数:
-
M
- 此对象转发到的文件管理器的类型
- 所有实现的接口:
-
Closeable
,Flushable
,AutoCloseable
,JavaFileManager
,OptionChecker
除非另有说明,否则在此类中对“此文件管理器”的引用应被解释为间接地指代委托文件管理器
。
- 自 JDK 版本:
- 1.6
-
Nested Class Summary
Nested classes/interfaces declared in interface javax.tools.JavaFileManager
JavaFileManager.Location
-
Field Summary
-
Constructor Summary
ModifierConstructorDescriptionprotected
ForwardingJavaFileManager
(M fileManager) 创建一个新的ForwardingJavaFileManager
实例。 -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
释放此文件管理器直接或间接打开的任何资源。boolean
contains
(JavaFileManager.Location location, FileObject fo) 确定给定文件对象是否“包含在”指定位置中。void
flush()
刷新此文件管理器直接或间接打开的任何输出资源。getClassLoader
(JavaFileManager.Location location) 返回用于从给定面向包的位置加载插件的类加载器。getFileForInput
(JavaFileManager.Location location, String packageName, String relativeName) getFileForOutput
(JavaFileManager.Location location, String packageName, String relativeName, FileObject sibling) getFileForOutputForOriginatingFiles
(JavaFileManager.Location location, String packageName, String relativeName, FileObject... originatingFiles) getJavaFileForInput
(JavaFileManager.Location location, String className, JavaFileObject.Kind kind) 返回表示给定面向包的位置中指定类型的指定类的输入的文件对象。getJavaFileForOutput
(JavaFileManager.Location location, String className, JavaFileObject.Kind kind, FileObject sibling) 返回表示给定面向包的位置中指定类型的指定类的输出的文件对象。getJavaFileForOutputForOriginatingFiles
(JavaFileManager.Location location, String className, JavaFileObject.Kind kind, FileObject... originatingFiles) 返回表示给定面向包的位置中指定类型的指定类的输出的文件对象。getLocationForModule
(JavaFileManager.Location location, String moduleName) 获取位置,该位置是位置内的命名模块的位置,该位置可以是面向模块的位置或输出位置。getLocationForModule
(JavaFileManager.Location location, JavaFileObject fo) 获取包含要在位置内找到的特定文件的模块的位置,该位置可以是面向模块的位置或输出位置。<S> ServiceLoader
<S> getServiceLoader
(JavaFileManager.Location location, Class<S> service) 从给定位置为特定服务类获取服务加载器。boolean
handleOption
(String current, Iterator<String> remaining) 处理一个选项。boolean
hasLocation
(JavaFileManager.Location location) 确定此文件管理器是否知道某个位置。inferBinaryName
(JavaFileManager.Location location, JavaFileObject file) 根据面向包的位置推断文件对象的二进制名称。inferModuleName
(JavaFileManager.Location location) 根据其位置推断模块的名称,如由getLocationForModule
或listModuleLocations
返回。boolean
isSameFile
(FileObject a, FileObject b) 比较两个文件对象,如果它们表示相同的底层对象,则返回true。int
isSupportedOption
(String option) 确定给定选项是否受支持,如果是,则选项需要的参数数量。list
(JavaFileManager.Location location, String packageName, Set<JavaFileObject.Kind> kinds, boolean recurse) 列出给定面向包的位置中符合给定条件的所有文件对象。列出模块化位置或输出位置中所有模块的位置。
-
Field Details
-
fileManager
所有方法都委托给的文件管理器。
-
-
Constructor Details
-
ForwardingJavaFileManager
创建一个新的ForwardingJavaFileManager
实例。- 参数:
-
fileManager
- 委托给此文件管理器
-
-
Method Details
-
getClassLoader
从接口复制的描述:JavaFileManager
返回用于从给定面向包的位置加载插件的类加载器。例如,为了加载注解处理器,编译器将请求ANNOTATION_PROCESSOR_PATH
位置的类加载器。- 指定者:
-
getClassLoader
在接口JavaFileManager
中 - 参数:
-
location
- 一个位置 - 返回:
-
给定位置的类加载器;如果禁用从给定位置加载插件或位置未知,则返回
null
- 抛出:
-
SecurityException
- 如果无法在当前安全上下文中创建类加载器 -
IllegalStateException
- 如果已调用JavaFileManager.close()
并且无法重新打开此文件管理器
-
list
public Iterable<JavaFileObject> list(JavaFileManager.Location location, String packageName, Set<JavaFileObject.Kind> kinds, boolean recurse) throws IOException 从接口复制的描述:JavaFileManager
列出给定面向包的位置中符合给定条件的所有文件对象。如果recurse
为true,则在“子包”中列出文件对象。注意:即使此文件管理器未知给定位置,也可能不返回
null
。此外,未知位置可能不会引发异常。- 指定者:
-
list
在接口JavaFileManager
中 - 参数:
-
location
- 一个位置 -
packageName
- 一个包名 -
kinds
- 仅返回这些种类的对象 -
recurse
- 如果为true,则包括“子包” - 返回:
- 符合给定条件的所有文件对象的可迭代对象
- 抛出:
-
IOException
- 如果发生 I/O 错误,或者已调用JavaFileManager.close()
并且无法重新打开此文件管理器 -
IllegalStateException
- 如果已调用JavaFileManager.close()
并且无法重新打开此文件管理器
-
inferBinaryName
从接口复制的描述:JavaFileManager
根据面向包的位置推断文件对象的二进制名称。返回的二进制名称可能不符合Java 语言规范的有效二进制名称。- 指定者:
-
inferBinaryName
在接口JavaFileManager
中 - 参数:
-
location
- 一个位置 -
file
- 一个文件对象 - 返回:
-
二进制名称,如果文件对象未在给定位置找到,则返回
null
- 抛出:
-
IllegalStateException
- 如果已调用JavaFileManager.close()
并且无法重新打开此文件管理器
-
isSameFile
从接口复制的描述:JavaFileManager
比较两个文件对象,如果它们表示相同的底层对象,则返回true。- 指定者:
-
isSameFile
在接口JavaFileManager
中 - 参数:
-
a
- 一个文件对象 -
b
- 一个文件对象 - 返回:
- 如果给定的文件对象表示相同的底层对象,则返回true
- 抛出:
-
IllegalArgumentException
- 如果任一参数是使用另一个文件管理器创建的,并且此文件管理器不支持外部文件对象
-
handleOption
从接口复制的描述:JavaFileManager
处理一个选项。如果current
是此文件管理器的选项,则将从remaining
中消耗该选项的任何参数并返回true,否则返回false。- 指定者:
-
handleOption
在接口JavaFileManager
中 - 参数:
-
current
- 当前选项 -
remaining
- 剩余选项 - 返回值:
- 如果此选项由此文件管理器处理,则为true,否则为false
- 抛出:
-
IllegalArgumentException
- 如果此选项对此文件管理器的使用不正确 -
IllegalStateException
- 如果已调用JavaFileManager.close()
并且此文件管理器无法重新打开
-
hasLocation
从接口复制的描述:JavaFileManager
确定此文件管理器是否知道位置。- 指定者:
-
hasLocation
在接口JavaFileManager
中 - 参数:
-
location
- 一个位置 - 返回值:
- 如果已知该位置,则为true
-
isSupportedOption
从接口复制的描述:OptionChecker
确定给定选项是否受支持,如果支持,则选项需要的参数数量。- 指定者:
-
isSupportedOption
在接口OptionChecker
中 - 参数:
-
option
- 一个选项 - 返回值:
- 给定选项所需的参数数量,如果不支持该选项,则返回-1
-
getJavaFileForInput
public JavaFileObject getJavaFileForInput(JavaFileManager.Location location, String className, JavaFileObject.Kind kind) throws IOException 从接口复制的描述:JavaFileManager
返回表示给定包定位位置中指定类的指定种类的输入的文件对象。- 指定者:
-
getJavaFileForInput
在接口JavaFileManager
中 - 参数:
-
location
- 一个位置 -
className
- 类的名称 -
kind
- 文件的种类,必须是SOURCE
或CLASS
之一 - 返回值:
-
一个文件对象,如果文件不存在可能返回
null
- 抛出:
-
IllegalArgumentException
- 如果此位置对此文件管理器未知且文件管理器不支持未知位置,或者种类无效,或者位置是面向模块的位置 -
IllegalStateException
- 如果已调用JavaFileManager.close()
并且此文件管理器无法重新打开 -
IOException
- 如果发生I/O错误,或者已调用JavaFileManager.close()
并且此文件管理器无法重新打开
-
getJavaFileForOutput
public JavaFileObject getJavaFileForOutput(JavaFileManager.Location location, String className, JavaFileObject.Kind kind, FileObject sibling) throws IOException 从接口复制的描述:JavaFileManager
返回表示给定包定位位置中指定类的指定种类的输出的文件对象。可选地,此文件管理器可能将兄弟文件视为放置输出的提示。此提示的确切语义未指定。例如,JDK编译器javac将类文件放置在与源文件相同的目录中,除非提供了类文件输出目录。为了促进此行为,当调用此方法时,javac可能会将原始源文件作为兄弟文件提供。
- 指定者:
-
getJavaFileForOutput
在接口JavaFileManager
中 - 参数:
-
location
- 一个包定位位置 -
className
- 类的名称 -
kind
- 文件的种类,必须是SOURCE
或CLASS
之一 -
sibling
- 用作放置提示的文件对象;可能为null
- 返回值:
- 一个输出的文件对象
- 抛出:
-
IllegalArgumentException
- 如果兄弟文件对此文件管理器未知,或者此位置对此文件管理器未知且文件管理器不支持未知位置,或者种类无效,或者位置不是输出位置 -
IllegalStateException
- 已调用JavaFileManager.close()
并且此文件管理器无法重新打开 -
IOException
- 如果发生I/O错误,或者已调用JavaFileManager.close()
并且此文件管理器无法重新打开
-
getJavaFileForOutputForOriginatingFiles
public JavaFileObject getJavaFileForOutputForOriginatingFiles(JavaFileManager.Location location, String className, JavaFileObject.Kind kind, FileObject... originatingFiles) throws IOException 返回表示给定包定位位置中指定类的指定种类的输出的文件对象。提供的
originatingFiles
表示以某种未指定的方式用于创建此方法创建的文件内容的文件。请参阅Filer.createSourceFile(java.lang.CharSequence, javax.lang.model.element.Element...)
中的originatingElements
。Elements.getFileObjectOf(javax.lang.model.element.Element)
可用于将Element
转换为FileObject
。- 指定者:
-
getJavaFileForOutputForOriginatingFiles
在接口JavaFileManager
中 - 实现要求:
-
如果
ForwardingJavaFileManager
的子类覆盖了getJavaFileForOutput(javax.tools.JavaFileManager.Location, java.lang.String, javax.tools.JavaFileObject.Kind, javax.tools.FileObject)
方法,则根据JavaFileManager.getJavaFileForOutputForOriginatingFiles(javax.tools.JavaFileManager.Location, java.lang.String, javax.tools.JavaFileObject.Kind, javax.tools.FileObject...)
的一般约定委托给它。如果子类没有覆盖该方法,则调用将委托给fileManager
。 - 参数:
-
location
- 一个面向包的位置 -
className
- 类的名称 -
kind
- 文件类型,必须是SOURCE
或CLASS
之一 -
originatingFiles
- 贡献到这个新创建文件的文件;null
等同于空的originatingFiles
,表示没有已知的原始文件 - 返回:
- 一个用于输出的文件对象
- 抛出:
-
IllegalArgumentException
- 如果兄弟文件未知于此文件管理器,或者位置未知于此文件管理器且文件管理器不支持未知位置,或者类型无效,或者位置不是输出位置 -
IllegalStateException
- 已调用JavaFileManager.close()
并且此文件管理器无法重新打开 -
IOException
- 如果发生I/O错误,或者已调用JavaFileManager.close()
并且此文件管理器无法重新打开 - 参见:
-
getFileForInput
public FileObject getFileForInput(JavaFileManager.Location location, String packageName, String relativeName) throws IOException 从接口复制的描述:JavaFileManager
返回一个用于表示给定包中指定包中指定相对名称的输入的文件对象。如果返回的对象表示源或类文件,则必须是
JavaFileObject
的实例。非正式地,此方法返回的文件对象位于位置、包名称和相对名称的连接处。例如,要在包“com.sun.tools.javac”中的SOURCE_PATH位置中定位属性文件“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"
的文件对象。- 指定者:
-
getFileForInput
在接口JavaFileManager
中 - 参数:
-
location
- 一个面向包的位置 -
packageName
- 包名称 -
relativeName
- 相对名称 - 返回:
-
一个文件对象,如果文件不存在可能返回
null
- 抛出:
-
IllegalArgumentException
- 如果位置未知于此文件管理器且文件管理器不支持未知位置,或者relativeName
无效,或者位置是面向模块的位置 -
IllegalStateException
- 已调用JavaFileManager.close()
并且此文件管理器无法重新打开 -
IOException
- 如果发生I/O错误,或者已调用JavaFileManager.close()
并且此文件管理器无法重新打开
-
getFileForOutput
public FileObject getFileForOutput(JavaFileManager.Location location, String packageName, String relativeName, FileObject sibling) throws IOException 从接口复制的描述:JavaFileManager
返回一个用于表示给定位置中指定包中指定相对名称的输出的文件对象。可选地,此文件管理器可能将兄弟文件视为放置输出的提示。此提示的确切语义未指定。例如,JDK编译器javac通常将类文件放置在与源文件相同的目录中,除非提供了类文件输出目录。为了促进此行为,当调用此方法时,javac可能会将原始源文件作为兄弟文件提供。
如果返回的对象表示源或类文件,则必须是
JavaFileObject
的实例。非正式地,此方法返回的文件对象位于位置、包名称和相对名称的连接处,或者位于与兄弟参数相邻的位置。有关示例,请参阅
getFileForInput
。- 指定者:
-
getFileForOutput
在接口JavaFileManager
中 - 参数:
-
location
- 输出位置 -
packageName
- 包名称 -
relativeName
- 相对名称 -
sibling
- 用作放置提示的文件对象;可能为null
- 返回:
- 一个文件对象
- 抛出:
-
IllegalArgumentException
- 如果兄弟文件未知于此文件管理器,或者位置未知于此文件管理器且文件管理器不支持未知位置,或者relativeName
无效,或者位置不是输出位置 -
IllegalStateException
- 已调用JavaFileManager.close()
并且此文件管理器无法重新打开 -
IOException
- 如果发生I/O错误,或者已调用JavaFileManager.close()
并且此文件管理器无法重新打开
-
getFileForOutputForOriginatingFiles
public FileObject getFileForOutputForOriginatingFiles(JavaFileManager.Location location, String packageName, String relativeName, FileObject... originatingFiles) throws IOException 返回一个用于表示给定位置中指定包中指定相对名称的输出的文件对象。提供的
originatingFiles
表示以某种未指定的方式用于创建此方法创建的文件内容的文件。请参阅Filer.createResource(javax.tools.JavaFileManager.Location, java.lang.CharSequence, java.lang.CharSequence, javax.lang.model.element.Element...)
中的originatingElements
。Elements.getFileObjectOf(javax.lang.model.element.Element)
可用于将Element
转换为FileObject
。如果返回的对象表示源或类文件,则必须是
JavaFileObject
的实例。非正式地,此方法返回的文件对象位于位置、包名称和相对名称的连接处,或者位于从
originatingFiles
推断的位置。有关示例,请参阅getFileForInput
。- 指定者:
-
getFileForOutputForOriginatingFiles
在接口JavaFileManager
中 - 实现要求:
-
如果
ForwardingJavaFileManager
的子类覆盖了getFileForOutput(javax.tools.JavaFileManager.Location, java.lang.String, java.lang.String, javax.tools.FileObject)
方法,此方法将根据JavaFileManager.getFileForOutputForOriginatingFiles(javax.tools.JavaFileManager.Location, java.lang.String, java.lang.String, javax.tools.FileObject...)
的一般契约委托给它。如果子类没有覆盖该方法,则调用将委托给fileManager
。 - 参数:
-
location
- 输出位置 -
packageName
- 包名 -
relativeName
- 相对名称 -
originatingFiles
- 贡献到这个新创建文件的文件;null
等同于空的originatingFiles
,表示没有已知的原始文件 - 返回:
- 文件对象
- 抛出:
-
IllegalArgumentException
- 如果兄弟文件对此文件管理器未知,或者位置对此文件管理器未知且文件管理器不支持未知位置,或者relativeName
无效,或者位置不是输出位置 -
IllegalStateException
- 如果已调用JavaFileManager.close()
并且此文件管理器无法重新打开 -
IOException
- 如果发生I/O错误,或者已调用JavaFileManager.close()
并且此文件管理器无法重新打开 - 参见:
-
flush
从接口复制的描述:JavaFileManager
直接或间接刷新此文件管理器打开的任何输出资源。刷新已关闭的文件管理器没有效果。- 指定者:
-
flush
在接口Flushable
中 - 指定者:
-
flush
在接口JavaFileManager
中 - 抛出:
-
IOException
- 如果发生I/O错误 - 参见:
-
close
从接口复制的描述:JavaFileManager
直接或间接释放此文件管理器打开的任何资源。这可能使此文件管理器无效,并且对此对象或通过此对象获得的任何对象的后续调用的效果未定义,除非明确允许。但是,关闭已经关闭的文件管理器没有效果。- 指定者:
-
close
在接口AutoCloseable
中 - 指定者:
-
close
在接口Closeable
中 - 指定者:
-
close
在接口JavaFileManager
中 - 抛出:
-
IOException
- 如果发生I/O错误 - 参见:
-
getLocationForModule
public JavaFileManager.Location getLocationForModule(JavaFileManager.Location location, String moduleName) throws IOException 从接口复制的描述:JavaFileManager
获取给定位置内命名模块的位置,该位置可以是模块定向位置或输出位置。如果给定位置是输出位置,则结果将是输出位置,否则将是面向包的位置。- 指定者:
-
getLocationForModule
在接口JavaFileManager
中 - 参数:
-
location
- 模块定向位置 -
moduleName
- 要查找的模块的名称 - 返回:
- 命名模块的位置
- 抛出:
-
IOException
- 如果发生I/O错误 - 自:
- 9
-
getLocationForModule
public JavaFileManager.Location getLocationForModule(JavaFileManager.Location location, JavaFileObject fo) throws IOException 从接口复制的描述:JavaFileManager
获取包含要在位置内找到的特定文件的模块的位置,该位置可以是模块定向位置或输出位置。如果给定位置是输出位置,则结果将是输出位置,否则将是面向包的位置。- 指定者:
-
getLocationForModule
在接口JavaFileManager
中 - 参数:
-
location
- 模块定向位置 -
fo
- 文件 - 返回:
- 包含文件的模块
- 抛出:
-
IOException
- 如果发生I/O错误 - 自:
- 9
-
getServiceLoader
public <S> ServiceLoader<S> getServiceLoader(JavaFileManager.Location location, Class<S> service) throws IOException 从接口复制的描述:JavaFileManager
从给定位置获取特定服务类的服务加载器。如果位置是模块定向位置,则服务加载器将使用该位置中找到的模块中的服务声明。否则,将使用面向包的位置创建服务加载器,在这种情况下,服务将使用META-INF/services
中的提供者配置文件确定。- 指定者:
-
getServiceLoader
在接口JavaFileManager
中 - 类型参数:
-
S
- 服务类 - 参数:
-
location
- 模块定向位置 -
service
- 服务类的Class
对象 - 返回:
- 给定服务类的服务加载器
- 抛出:
-
IOException
- 如果发生I/O错误 - 自:
- 9
-
inferModuleName
从接口复制的描述:JavaFileManager
从其位置推断模块的名称,如getLocationForModule
或listModuleLocations
返回的位置。- 指定者:
-
inferModuleName
在接口JavaFileManager
中 - 参数:
-
location
- 表示模块的面向包的位置 - 返回:
- 模块的名称
- 抛出:
-
IOException
- 如果发生I/O错误 - 自:
- 9
-
listLocationsForModules
public Iterable<Set<JavaFileManager.Location>> listLocationsForModules(JavaFileManager.Location location) throws IOException 从接口复制的描述:JavaFileManager
列出模块定向位置或输出位置中所有模块的位置。返回的位置将是输出位置,如果给定位置是输出位置,否则将是面向包的位置。- 指定者:
-
listLocationsForModules
在接口JavaFileManager
中 - 参数:
-
location
- 要列出模块的面向模块的位置 - 返回值:
- 一系列包含模块的位置集合
- 抛出:
-
IOException
- 如果发生I/O错误 - 自版本:
- 9
-
contains
从接口中复制的描述:JavaFileManager
确定给定文件对象是否“包含在”指定位置中。对于面向包的位置,如果存在packageName和relativeName的值,使得以下任一调用将返回
相同
文件对象,则文件对象包含在该位置中:getFileForInput(location, packageName, relativeName) getFileForOutput(location, packageName, relativeName, null)
对于面向模块的位置,如果存在可以通过以下调用获得的模块,则文件对象包含在该位置中:
getLocationForModule(location, moduleName)
- 指定者:
-
contains
在接口JavaFileManager
中 - 参数:
-
location
- 位置 -
fo
- 文件对象 - 返回值:
- 文件是否包含在该位置中
- 抛出:
-
IOException
- 如果有问题确定结果 - 自版本:
- 9
-