-
- All Superinterfaces:
-
AutoCloseable,Closeable,Flushable,JavaFileManager,OptionChecker
public interface StandardJavaFileManager extends JavaFileManager
文件管理器基于java.io.File和java.nio.file.Path 。 获取此类实例的常用方法是使用getStandardFileManager ,例如:JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();此文件管理器创建一个代表普通文件对象files , zip file entries ,或类似的基于文件系统的容器中的条目。 从实现此接口的文件管理器返回的任何文件对象都必须遵循以下行为: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)必须成功,如果下面会成功(忽略编码问题):new FileInputStream(new File(fileObject.toUri()))
- 如果以下方法成功(忽略编码问题),方法
FileObject.openOutputStream()和FileObject.openWriter()必须成功:new FileOutputStream(new File(fileObject.toUri()))
- 方法
- URI从
FileObject.toUri()返回- 必须是absolute (有一个架构),和
- 必须有一个normalized path component ,可以解析没有任何特定于进程的上下文,如当前目录(文件名必须是绝对的)。
-
file:///C:/Documents%20and%20Settings/UncleBob/BobsApp/Test.java -
jar:///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(路径未规范化)
此接口的所有实现都必须支持表示default file system.中文件的Path对象。建议实现应支持来自任何文件系统的Path对象。
- API Note:
-
此接口上的某些方法采用
Collection<? extends Path>而不是Iterable<? extends Path>。 这是为了防止使用单个Path意外调用该方法的可能性,因为虽然Path实现了Iterable<Path>,但使用单个Path调用这些方法几乎永远不会是正确的,并将其视为其Iterable组件。 - 从以下版本开始:
- 1.6
-
-
嵌套类汇总
嵌套类 变量和类型 接口 描述 static interfaceStandardJavaFileManager.PathFactory工厂从字符串创建Path对象。-
Nested classes/interfaces declared in interface javax.tools.JavaFileManager
JavaFileManager.Location
-
-
方法摘要
所有方法 实例方法 抽象方法 Default Methods 变量和类型 方法 描述 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)返回表示给定路径的文件对象。Iterable<? extends JavaFileObject>getJavaFileObjectsFromStrings(Iterable<String> names)返回表示给定文件名的文件对象。Iterable<? extends File>getLocation(JavaFileManager.Location location)返回与给定位置关联的搜索路径。default Iterable<? extends Path>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 voidsetPathFactory(StandardJavaFileManager.PathFactory f)指定可用于从字符串或一系列字符串生成路径的工厂。-
声明方法的接口 javax.tools.JavaFileManager
close, contains, flush, getClassLoader, getFileForInput, getFileForOutput, getJavaFileForInput, getJavaFileForOutput, getLocationForModule, getLocationForModule, getServiceLoader, handleOption, hasLocation, inferBinaryName, inferModuleName, list, listLocationsForModules
-
声明方法的接口 javax.tools.OptionChecker
isSupportedOption
-
-
-
-
方法详细信息
-
isSameFile
boolean isSameFile(FileObject a, FileObject b)
比较两个文件对象,如果它们在任何基于文件系统的容器中表示相同的规范文件,zip文件条目或条目,则返回true。- Specified by:
-
isSameFile接口JavaFileManager - 参数
-
a- 文件对象 -
b- 文件对象 - 结果
- 如果给定的文件对象表示相同的规范文件,zip文件条目或路径,则为true;否则为false。 否则是假的
- 异常
-
IllegalArgumentException- 如果其中一个参数是使用其他文件管理器实现创建的
-
getJavaFileObjectsFromFiles
Iterable<? extends JavaFileObject> getJavaFileObjectsFromFiles(Iterable<? extends File> files)
返回表示给定文件的文件对象。- 参数
-
files- 文件列表 - 结果
- 文件对象列表
- 异常
-
IllegalArgumentException- 如果文件列表包含目录
-
getJavaFileObjectsFromPaths
default Iterable<? extends JavaFileObject> getJavaFileObjectsFromPaths(Iterable<? extends Path> paths)
返回表示给定路径的文件对象。- 实现要求:
-
默认实现将每个路径转换为文件并调用
getJavaObjectsFromFiles。 如果无法将任何路径转换为文件,则抛出IllegalArgumentException。 - 参数
-
paths- 路径列表 - 结果
- 文件对象列表
- 异常
-
IllegalArgumentException- 如果路径列表包含目录,或者此文件管理器不支持任何给定路径。 - 从以下版本开始:
- 9
-
getJavaFileObjects
Iterable<? extends JavaFileObject> getJavaFileObjects(File... files)
- 参数
-
files- 一组文件 - 结果
- 文件对象列表
- 异常
-
IllegalArgumentException- 如果文件数组包含目录 -
NullPointerException- 如果给定数组包含空元素
-
getJavaFileObjects
default Iterable<? extends JavaFileObject> getJavaFileObjects(Path... paths)
- 参数
-
paths- 路径数组 - 结果
- 文件对象列表
- 异常
-
IllegalArgumentException- 如果文件数组包含目录 -
NullPointerException- 如果给定数组包含null元素 - 从以下版本开始:
- 9
-
getJavaFileObjectsFromStrings
Iterable<? extends JavaFileObject> getJavaFileObjectsFromStrings(Iterable<String> names)
返回表示给定文件名的文件对象。- 参数
-
names- 文件名列表 - 结果
- 文件对象列表
- 异常
-
IllegalArgumentException- 如果文件名列表包含目录
-
getJavaFileObjects
Iterable<? extends JavaFileObject> getJavaFileObjects(String... names)
- 参数
-
names- 文件名列表 - 结果
- 文件对象列表
- 异常
-
IllegalArgumentException- 如果文件名数组包含目录 -
NullPointerException- 如果给定数组包含null元素
-
setLocation
void setLocation(JavaFileManager.Location location, Iterable<? extends File> files) throws IOException
- 参数
-
location- 一个位置 -
files- 文件列表,如果null使用此位置的默认搜索路径 - 异常
-
IllegalArgumentException- 如果location是输出位置且files不包含任何一个元素 -
IOException- 如果location是输出位置,并且不表示现有目录 - 另请参见:
-
getLocation(javax.tools.JavaFileManager.Location)
-
setLocationFromPaths
default void setLocationFromPaths(JavaFileManager.Location location, Collection<? extends Path> paths) throws IOException
- 实现要求:
-
默认实现将每个路径转换为文件并调用
getJavaObjectsFromFiles。 如果任何路径无法转换为文件,将抛出IllegalArgumentException 。 - 参数
-
location- 一个位置 -
paths- 路径列表,如果null使用此位置的默认搜索路径 - 异常
-
IllegalArgumentException- 如果location是输出位置且paths不包含任何一个元素,或者此文件管理器不支持任何给定路径 -
IOException- 如果location是输出位置且paths不表示现有目录 - 从以下版本开始:
- 9
- 另请参见:
-
getLocation(javax.tools.JavaFileManager.Location)
-
setLocationForModule
default void setLocationForModule(JavaFileManager.Location location, String moduleName, Collection<? extends Path> paths) throws IOException
将给定的搜索路径与给定的模块和位置相关联,该模块和位置必须是面向模块的或输出位置。 之前的任何值都将被丢弃。 这将覆盖从与位置本身关联的搜索路径派生的任何默认关联。 如果通过调用setLocation或setLocationFromPaths将新搜索路径与该位置相关联,则将取消所有此类特定于模块的关联。- 参数
-
location- 该位置 -
moduleName- 模块的名称 -
paths- 与位置和模块关联的搜索路径。 - 异常
-
IllegalStateException- 如果位置不是面向模块或输出位置。 -
UnsupportedOperationException- 此文件管理器不支持此操作。 -
IOException- 如果location是输出位置,并且paths不表示现有目录 - 从以下版本开始:
- 9
- 另请参见:
-
setLocation(javax.tools.JavaFileManager.Location,java.lang.Iterable<? extends java.io.File>),setLocationFromPaths(javax.tools.JavaFileManager.Location,java.util.Collection<? extends java.nio.file.Path>)
-
getLocation
Iterable<? extends File> getLocation(JavaFileManager.Location location)
返回与给定位置关联的搜索路径。- 参数
-
location- 一个位置 - 结果
-
如果此位置没有关联的搜索路径,
null文件列表或null - 异常
-
IllegalStateException- 如果搜索路径的任何元素无法转换为File ,或者搜索路径无法表示为简单的一系列文件。 - 另请参见:
-
setLocation(javax.tools.JavaFileManager.Location, java.lang.Iterable<? extends java.io.File>),Path.toFile()
-
getLocationAsPaths
default Iterable<? extends Path> getLocationAsPaths(JavaFileManager.Location location)
返回与给定位置关联的搜索路径。- 实现要求:
-
默认实现调用
getLocation,然后返回一个Iterable致电形成toPath()每个File从返回getLocation。 - 参数
-
location- 一个位置 - 结果
-
路径列表或
null如果此位置没有关联的搜索路径) - 异常
-
IllegalStateException- 如果搜索路径无法表示为一系列简单的路径。 - 从以下版本开始:
- 9
- 另请参见:
-
setLocationFromPaths(javax.tools.JavaFileManager.Location, java.util.Collection<? extends java.nio.file.Path>)
-
asPath
default Path asPath(FileObject file)
- 实现要求:
-
默认实现为所有文件抛出
UnsupportedOperationException。 - 参数
-
file- 文件对象 - 结果
- 表示相同底层文件系统工件的路径
- 异常
-
IllegalArgumentException- 如果文件对象没有基础路径 -
UnsupportedOperationException- 如果此文件管理器不支持该操作 - 从以下版本开始:
- 9
-
setPathFactory
default void setPathFactory(StandardJavaFileManager.PathFactory f)
指定可用于从字符串或一系列字符串生成路径的工厂。 如果未调用此方法,将使用其getPath方法等效于调用java.nio.file.Paths.get(first, more)的工厂。- 实现要求:
- 此方法的默认实现忽略了提供的工厂。
- 参数
-
f- 工厂 - 从以下版本开始:
- 9
-
-