- 所有父级接口:
AutoCloseable,Closeable,Flushable,JavaFileManager,OptionChecker
基于
java.io.File 和 java.nio.file.Path 的文件管理器。获取此类实例的常见方法是使用 getStandardFileManager ,例如:
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();此文件管理器创建代表常规 文件 、 压缩文件条目 或基于类似文件系统的容器中的条目的文件对象。从实现此接口的文件管理器返回的任何文件对象必须遵守以下行为:DiagnosticCollector<JavaFileObject>diagnostics = newDiagnosticCollector<JavaFileObject>(); StandardJavaFileManager fm = compiler.getStandardFileManager(diagnostics, null, null);
- 文件名不必是规范的。
- 对于代表常规文件的文件对象
- 方法
FileObject.delete()等同于File.delete(), - 方法
FileObject.getLastModified()等同于File.lastModified(), - 如果以下方法成功(忽略编码问题),方法
FileObject.getCharContent(boolean)、FileObject.openInputStream()和FileObject.openReader(boolean)必须成功:newFileInputStream(newFile(fileObject.toUri())) - 如果以下方法成功(忽略编码问题),方法
FileObject.openOutputStream()和FileObject.openWriter()必须成功:newFileOutputStream(newFile(fileObject.toUri()))
- 方法
- 从
FileObject.toUri()返回的 URI- 必须是 absolute(有一个模式),并且
- 必须有一个 normalized 路径组件 可以在没有任何特定于进程的上下文(例如当前目录)的情况下解析(文件名必须是绝对的)。
file:///C:/Documents%20and%20Settings/UncleBob/BobsApp/Test.javajar:///C:/Documents%20and%20Settings/UncleBob/lib/vendorA.jar!/com/vendora/LibraryClass.class
file:BobsApp/Test.java(文件名是相对的,取决于当前目录)jar:lib/vendorA.jar!/com/vendora/LibraryClass.class(路径的前半部分取决于当前目录,而 ! 之后的部分是合法的)Test.java(此 URI 取决于当前目录且没有模式)jar:///C:/Documents%20and%20Settings/UncleBob/BobsApp/../lib/vendorA.jar!com/vendora/LibraryClass.class(路径未规范化)
此接口的所有实现都必须支持表示 默认文件系统。 中文件的 Path 对象。建议实现应支持来自任何文件系统的 Path 对象。
- API 注意:
-
此接口上的某些方法采用
Collection<? extends Path>而不是Iterable<? extends Path>。这是为了防止使用单个Path作为此类参数意外调用该方法的可能性,因为尽管Path实现了Iterable<Path>,但使用单个Path调用这些方法并将其视为其参数的Iterable几乎永远不会正确成分。 - 自从:
- 1.6
-
内部类总结
内部类在接口 javax.tools.JavaFileManager 中声明的嵌套类/接口
JavaFileManager.Location -
方法总结
修饰符和类型方法描述default PathasPath(FileObject file) 返回此文件对象的路径(如果有)(可选操作)。Iterable<? extends JavaFileObject>getJavaFileObjects(File... files) 返回代表给定文件的文件对象。Iterable<? extends JavaFileObject>getJavaFileObjects(String... names) 返回表示给定文件名的文件对象。default Iterable<? extends JavaFileObject>getJavaFileObjects(Path... paths) 返回表示给定路径的文件对象。Iterable<? extends JavaFileObject>getJavaFileObjectsFromFiles(Iterable<? extends File> files) 返回代表给定文件的文件对象。default Iterable<? extends JavaFileObject>getJavaFileObjectsFromPaths(Iterable<? extends Path> paths) 已弃用。default Iterable<? extends JavaFileObject>getJavaFileObjectsFromPaths(Collection<? extends Path> paths) 返回表示给定路径的文件对象。Iterable<? extends JavaFileObject>返回表示给定文件名的文件对象。getLocation(JavaFileManager.Location location) 返回与给定位置关联的搜索路径。getLocationAsPaths(JavaFileManager.Location location) 返回与给定位置关联的搜索路径。booleanisSameFile(FileObject a, FileObject b) 比较两个文件对象,如果它们表示相同的规范文件、zip 文件条目或任何基于文件系统的容器中的条目,则返回 true。voidsetLocation(JavaFileManager.Location location, Iterable<? extends File> files) 将给定的搜索路径与给定的位置相关联。default voidsetLocationForModule(JavaFileManager.Location location, String moduleName, Collection<? extends Path> paths) 将给定的搜索路径与给定的模块和位置相关联,该模块和位置必须是面向模块的或输出位置。default voidsetLocationFromPaths(JavaFileManager.Location location, Collection<? extends Path> paths) 将给定的搜索路径与给定的位置相关联。default void指定可用于从一个字符串或一系列字符串生成路径的工厂。在接口 javax.tools.JavaFileManager 中声明的方法
close, contains, flush, getClassLoader, getFileForInput, getFileForOutput, getFileForOutputForOriginatingFiles, getJavaFileForInput, getJavaFileForOutput, getJavaFileForOutputForOriginatingFiles, getLocationForModule, getLocationForModule, getServiceLoader, handleOption, hasLocation, inferBinaryName, inferModuleName, list, listLocationsForModules在接口 javax.tools.OptionChecker 中声明的方法
isSupportedOption
-
方法详情
-
isSameFile
比较两个文件对象,如果它们表示相同的规范文件、zip 文件条目或任何基于文件系统的容器中的条目,则返回 true。- 指定者:
isSameFile在接口JavaFileManager中- 参数:
a- 文件对象b- 文件对象- 返回:
- 如果给定的文件对象表示相同的规范文件、zip 文件条目或路径,则为真;否则为假
- 抛出:
IllegalArgumentException- 如果任一参数是使用另一个文件管理器实现创建的
-
getJavaFileObjectsFromFiles
返回代表给定文件的文件对象。- 参数:
files- 文件列表- 返回:
- 文件对象列表
- 抛出:
IllegalArgumentException- 如果文件列表包含一个目录
-
getJavaFileObjectsFromPaths
default Iterable <? extends JavaFileObject > getJavaFileObjectsFromPaths(Collection <? extends Path > paths) 返回表示给定路径的文件对象。- 实现要求:
-
默认实现延迟将每个路径转换为文件并调用
getJavaFileObjectsFromFiles。如果在转换发生时无法将任何路径转换为文件,将抛出IllegalArgumentException。 - 参数:
paths- 路径列表- 返回:
- 文件对象列表
- 抛出:
IllegalArgumentException- 如果路径列表包含目录或者如果此文件管理器不支持任何给定路径- 自从:
- 13
-
getJavaFileObjectsFromPaths
@Deprecated (since ="13") default Iterable <? extends JavaFileObject > getJavaFileObjectsFromPaths(Iterable <? extends Path > paths) 已弃用。请改用getJavaFileObjectsFromPaths(Collection),以防止使用单个Path作为此类参数意外调用该方法的可能性。尽管Path实现了Iterable<Path>,传递单个Path并将其视为其组件的Iterable几乎永远不会是正确的。返回表示给定路径的文件对象。- 实现要求:
-
默认实现延迟将每个路径转换为文件并调用
getJavaFileObjectsFromPaths。如果在转换发生时无法将任何路径转换为文件,将抛出IllegalArgumentException。 - 参数:
paths- 路径列表- 返回:
- 文件对象列表
- 抛出:
IllegalArgumentException- 如果路径列表包含一个目录,或者如果此文件管理器不支持任何给定路径。- 自从:
- 9
-
getJavaFileObjects
返回代表给定文件的文件对象。便捷方法等同于:getJavaFileObjectsFromFiles(Arrays.asList(files))- 参数:
files- 文件数组- 返回:
- 文件对象列表
- 抛出:
IllegalArgumentException- 如果文件数组包含目录或者如果此文件管理器不支持任何给定路径NullPointerException- 如果给定数组包含空元素
-
getJavaFileObjects
返回表示给定路径的文件对象。便捷方法等同于:getJavaFileObjectsFromPaths(Arrays.asList(paths))- 实现要求:
-
默认实现只会在 getJavaFileObjectsFromPaths(Collection) 抛出它时抛出
NullPointerException。 - 参数:
paths- 一组路径- 返回:
- 文件对象列表
- 抛出:
IllegalArgumentException- 如果文件数组包含目录或者如果此文件管理器不支持任何给定路径NullPointerException- 如果给定数组包含空元素- 自从:
- 9
-
getJavaFileObjectsFromStrings
返回表示给定文件名的文件对象。- 参数:
names- 文件名列表- 返回:
- 文件对象列表
- 抛出:
IllegalArgumentException- 如果文件名列表包含一个目录
-
getJavaFileObjects
返回表示给定文件名的文件对象。便捷方法等同于:getJavaFileObjectsFromStrings(Arrays.asList(names))- 参数:
names- 文件名列表- 返回:
- 文件对象列表
- 抛出:
IllegalArgumentException- 如果文件名数组包含一个目录NullPointerException- 如果给定数组包含空元素
-
setLocation
void setLocation(JavaFileManager.Location location, Iterable <? extends File > files) throws IOException 将给定的搜索路径与给定的位置相关联。任何以前的值都将被丢弃。如果该位置是面向模块或输出位置,则setLocationForModule 设置的任何特定于模块的关联都将被取消。- 参数:
location- 一个位置files- 文件列表,如果null使用此位置的默认搜索路径- 抛出:
IllegalArgumentException- 如果location是一个输出位置并且files不包含一个元素IOException- 如果location是输出位置并且不代表现有目录- 参见:
-
setLocationFromPaths
default void setLocationFromPaths(JavaFileManager.Location location, Collection <? extends Path > paths) throws IOException 将给定的搜索路径与给定的位置相关联。任何以前的值都将被丢弃。如果该位置是面向模块或输出位置,则setLocationForModule 设置的任何特定于模块的关联都将被取消。- 实现要求:
-
默认实现懒惰地将每个路径转换为文件并调用
setLocation。如果在转换发生时无法将任何路径转换为文件,将抛出IllegalArgumentException。 - 参数:
location- 一个位置paths- 路径列表,如果null使用此位置的默认搜索路径- 抛出:
IllegalArgumentException- 如果location是一个输出位置并且paths不完全包含一个元素,或者如果此文件管理器不支持任何给定路径IOException- 如果location是输出位置并且paths不代表现有目录- 自从:
- 9
- 参见:
-
setLocationForModule
default void setLocationForModule(JavaFileManager.Location location, String moduleName, Collection <? extends Path > paths) throws IOException 将给定的搜索路径与给定的模块和位置相关联,该模块和位置必须是面向模块的或输出位置。任何以前的值都将被丢弃。这会覆盖从与位置本身关联的搜索路径派生的任何默认关联。如果通过调用 setLocation 或 setLocationFromPaths 将新的搜索路径与该位置相关联,则所有此类特定于模块的关联都将被取消。- 实现要求:
-
默认实现抛出
UnsupportedOperationException。 - 参数:
location- 位置moduleName- 模块名称paths- 与位置和模块关联的搜索路径。- 抛出:
IllegalStateException- 如果该位置不是面向模块或输出的位置。UnsupportedOperationException- 如果此文件管理器不支持此操作。IOException- 如果location是输出位置并且paths不代表现有目录- 自从:
- 9
- 参见:
-
getLocation
返回与给定位置关联的搜索路径。- 参数:
location- 一个位置- 返回:
-
如果此位置没有关联的搜索路径,则为文件列表或
null - 抛出:
IllegalStateException- 如果搜索路径的任何元素无法转换为 File ,或者如果搜索路径无法表示为一系列简单的文件。- 参见:
-
getLocationAsPaths
返回与给定位置关联的搜索路径。- 实现要求:
-
默认实现调用
getLocation,然后返回一个Iterable,该Iterable通过对从getLocation返回的每个File调用toPath()形成。 - 参数:
location- 一个位置- 返回:
-
路径列表或
null如果此位置没有关联的搜索路径 - 抛出:
IllegalStateException- 如果搜索路径不能表示为一系列简单的路径。- 自从:
- 9
- 参见:
-
asPath
返回此文件对象的路径(如果有)(可选操作)。从FileSystem派生的文件对象(包括默认文件系统)通常具有对应的底层Path对象。在这种情况下,此方法可用于访问该对象。- 实现要求:
-
默认实现为所有文件抛出
UnsupportedOperationException。 - 参数:
file- 文件对象- 返回:
- 表示相同底层文件系统工件的路径
- 抛出:
IllegalArgumentException- 如果文件对象没有底层路径UnsupportedOperationException- 如果此文件管理器不支持该操作- 自从:
- 9
-
setPathFactory
指定可用于从一个字符串或一系列字符串生成路径的工厂。如果不调用此方法,将使用getPath方法相当于调用java.nio.file.Paths.get(first, more)的工厂。- 实现要求:
- 此方法的默认实现忽略提供的工厂。
- 参数:
f- 工厂- 自从:
- 9
-
getJavaFileObjectsFromPaths(Collection),以防止使用单个Path作为此类参数意外调用该方法的可能性。