模块 java.compiler

接口 StandardJavaFileManager

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

public interface StandardJavaFileManager extends JavaFileManager
基于 java.io.File java.nio.file.Path 的文件管理器。获取此类实例的常见方法是使用 getStandardFileManager ,例如:
  JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
  DiagnosticCollector<JavaFileObject> diagnostics =
    new DiagnosticCollector<JavaFileObject>() ;
  StandardJavaFileManager fm = compiler.getStandardFileManager(diagnostics, null, null);
 
此文件管理器创建代表常规 文件压缩文件条目 或基于类似文件系统的容器中的条目的文件对象。从实现此接口的文件管理器返回的任何文件对象必须遵守以下行为: 根据这些规则,例如以下 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