javax.tools

接口
异常
所有超级接口:
Closeable, Flushable, JavaFileManager, OptionChecker

public interface StandardJavaFileManager
     
extends JavaFileManager

基于 java.io.File 的文件管理器。获取此类实例的一般方法是使用 getStandardFileManager,例如:

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
DiagnosticCollector<JavaFileObject> diagnostics =
new DiagnosticCollector<JavaFileObject>();
StandardJavaFileManager fm = compiler.getStandardFileManager(diagnostics, null, null);
 
此文件管理器创建的文件对象表示常规 文件zip 文件条目或者基于类似文件系统的容器中的条目。从实现此接口的文件管理器返回的任何文件对象都必须遵守以下行为: 根据这些规则,以下 URI 是允许的:
  • file:///C:/Documents%20and%20Settings/UncleBob/BobsApp/Test.java
  • jar:///C:/Documents%20and%20Settings/UncleBob/lib/vendorA.jar!com/vendora/LibraryClass.class
而以下 URI 不允许(原因在括号中注明):
  • 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 (路径没有标准化)

从以下版本开始:
1.6

嵌套类摘要
 
从接口 javax.tools.JavaFileManager 继承的嵌套类/接口
JavaFileManager.Location
 
方法摘要
 Iterable<? extends JavaFileObject> getJavaFileObjects(File... files)
          获取表示给定文件的文件对象。
 Iterable<? extends JavaFileObject> getJavaFileObjects(String... names)
          获取表示给定文件名称的文件对象。
 Iterable<? extends JavaFileObject> getJavaFileObjectsFromFiles(Iterable<? extends File> files)
          获取表示给定文件的文件对象。
 Iterable<? extends JavaFileObject> getJavaFileObjectsFromStrings(Iterable<String> names)
          获取表示给定文件名称的文件对象。
 Iterable<? extends File> getLocation(JavaFileManager.Location location)
          获取与给定位置关联的路径。
 boolean isSameFile(FileObject a, FileObject b)
          比较两个文件对象,如果它们表示相同的规范文件、zip 文件条目或者基于任何文件系统的容器中的条目,则返回 true。
 void setLocation(JavaFileManager.Location location, Iterable<? extends File> path)
          将给定路径与给定位置关联。
 
从接口 javax.tools.JavaFileManager 继承的方法
close, flush, getClassLoader, getFileForInput, getFileForOutput, getJavaFileForInput, getJavaFileForOutput, handleOption, hasLocation, inferBinaryName, list
 
从接口 javax.tools.OptionChecker 继承的方法
isSupportedOption
 

方法详细信息

isSameFile

boolean isSameFile(FileObject a,
                   FileObject b)
比较两个文件对象,如果它们表示相同的规范文件、zip 文件条目或者基于任何文件系统的容器中的条目,则返回 true。

指定者:
接口 JavaFileManager 中的 isSameFile
参数:
a - 文件对象
b - 文件对象
返回:
如果给定的文件对象表示相同的规范文件或 zip 文件条目,则返回 true;否则返回 false。
抛出:
IllegalArgumentException - 如果其中一个参数是使用另一个文件管理器实现创建的

getJavaFileObjectsFromFiles

Iterable<? extends JavaFileObject> getJavaFileObjectsFromFiles(Iterable<? extends File> files)
获取表示给定文件的文件对象。

参数:
files - 文件列表
返回:
文件对象列表
抛出:
IllegalArgumentException - 如果文件列表包含目录

getJavaFileObjects

Iterable<? extends JavaFileObject> getJavaFileObjects(File... files)
获取表示给定文件的文件对象。一个便捷方法,等效于:
getJavaFileObjectsFromFiles(Arrays.asList(files))
 

参数:
files - 文件数组
返回:
文件对象列表
抛出:
IllegalArgumentException - 如果文件数组包含目录
NullPointerException - 如果给定数组包含 null 元素

getJavaFileObjectsFromStrings

Iterable<? extends JavaFileObject> getJavaFileObjectsFromStrings(Iterable<String> names)
获取表示给定文件名称的文件对象。

参数:
names - 文件名称列表
返回:
文件对象列表
抛出:
IllegalArgumentException - 如果文件名称列表包含目录

getJavaFileObjects

Iterable<? extends JavaFileObject> getJavaFileObjects(String... names)
获取表示给定文件名称的文件对象。一个便捷方法,等效于:
getJavaFileObjectsFromStrings(Arrays.asList(names))
 

参数:
names - 文件名称列表
返回:
文件对象列表
抛出:
IllegalArgumentException - 如果文件名称数组包含目录
NullPointerException - 如果给定数组包含 null 元素

setLocation

void setLocation(JavaFileManager.Location location,
                 Iterable<? extends File> path)
                 throws IOException
将给定路径与给定位置关联。丢弃所有以前的值。

参数:
location - 位置
path - 文件列表,如果为 null,则使用此位置的默认路径
抛出:
IllegalArgumentException - 如果位置为一个输出位置并且路径不完全包含一个元素
IOException - 如果位置是一个输出位置并且路径不表示现有目录
另请参见:
getLocation(javax.tools.JavaFileManager.Location)

getLocation

Iterable<? extends File> getLocation(JavaFileManager.Location location)
获取与给定位置关联的路径。

参数:
location - 位置
返回:
文件列表,如果此位置没有关联路径,则返回 null
另请参见:
setLocation(javax.tools.JavaFileManager.Location, java.lang.Iterable )