Module java.compiler
Package javax.tools

Interface StandardJavaFileManager

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

public interface StandardJavaFileManager extends JavaFileManager
基于java.io.Filejava.nio.file.Path的文件管理器。获取此类的实例的常见方式是使用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
而这些则不允许(原因在括号中):
  • 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