-
- 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.中的文件的路径对象。建议实现应支持来自任何文件系统的路径对象。
- API Note:
-
此接口上的某些方法需要
Collection<? extends Path>
而不是Iterable<? extends Path>
。 这是为了防止意外地使用一个Path
的方法来调用该方法的可能性,因为尽管Path
实现了Iterable<Path>
,但是使用一个Path
来调用这些方法几乎是不正确的,并且将它视为其中的一个Iterable
组件。 - 从以下版本开始:
- 1.6
-
-
Nested Class Summary
Nested Classes Modifier and Type 接口 描述 static interface
StandardJavaFileManager.PathFactory
工厂从字符串创建Path
对象。-
Nested classes/interfaces inherited from interface javax.tools.JavaFileManager
JavaFileManager.Location
-
-
方法摘要
所有方法 接口方法 抽象方法 Default Methods Modifier and Type 方法 描述 default Path
asPath(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)
返回与给定位置相关联的搜索路径。boolean
isSameFile(FileObject a, FileObject b)
比较两个文件对象,如果它们表示相同的规范文件,zip文件条目或任何基于文件系统的容器中的条目,则返回true。void
setLocation(JavaFileManager.Location location, Iterable<? extends File> files)
将给定的搜索路径与给定位置相关联。default void
setLocationForModule(JavaFileManager.Location location, String moduleName, Collection<? extends Path> paths)
将给定的搜索路径与给定的模块和位置相关联,该模块和位置必须是面向模块或输出位置。default void
setLocationFromPaths(JavaFileManager.Location location, Collection<? extends Path> paths)
将给定的搜索路径与给定位置相关联。default void
setPathFactory(StandardJavaFileManager.PathFactory f)
指定可用于从字符串或一系列字符串生成路径的工厂。-
Methods inherited from interface javax.tools.JavaFileManager
close, contains, flush, getClassLoader, getFileForInput, getFileForOutput, getJavaFileForInput, getJavaFileForOutput, getLocationForModule, getLocationForModule, getServiceLoader, handleOption, hasLocation, inferBinaryName, inferModuleName, list, listLocationsForModules
-
Methods inherited from interface javax.tools.OptionChecker
isSupportedOption
-
-
-
-
方法详细信息
-
isSameFile
boolean isSameFile(FileObject a, FileObject b)
比较两个文件对象,如果它们表示相同的规范文件,zip文件条目或任何基于文件系统的容器中的条目,则返回true。- Specified by:
-
isSameFile
在接口JavaFileManager
- 参数
-
a
- 一个文件对象 -
b
- 一个文件对象 - 结果
- 如果给定的文件对象表示相同的规范文件,zip文件条目或路径,则为true; 否则为假
- 异常
-
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
- 如果给定的数组包含空元素 - 从以下版本开始:
- 9
-
getJavaFileObjectsFromStrings
Iterable<? extends JavaFileObject> getJavaFileObjectsFromStrings(Iterable<String> names)
返回表示给定文件名的文件对象。- 参数
-
names
- 文件名列表 - 结果
- 文件对象的列表
- 异常
-
IllegalArgumentException
- 如果文件名列表包含目录
-
getJavaFileObjects
Iterable<? extends JavaFileObject> getJavaFileObjects(String... names)
- 参数
-
names
- 文件名列表 - 结果
- 文件对象的列表
- 异常
-
IllegalArgumentException
- 如果文件名的数组包含一个目录 -
NullPointerException
- 如果给定的数组包含空元素
-
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
如果这个位置没有关联的搜索路径 - 异常
-
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
-
-