Module  java.compiler
软件包  javax.tools

Class ForwardingJavaFileManager<M extends JavaFileManager>

    • 字段详细信息

      • fileManager

        protected final M extends JavaFileManager fileManager
        所有方法的委托文件管理器。
    • 构造方法详细信息

      • ForwardingJavaFileManager

        protected ForwardingJavaFileManager​(M fileManager)
        创建一个新的ForwardingJavaFileManager实例。
        参数
        fileManager - 委托给这个文件管理器
    • 方法详细信息

      • isSameFile

        public boolean isSameFile​(FileObject a,
                                  FileObject b)
        描述从接口JavaFileManager复制
        比较两个文件对象,如果它们代表相同的底层对象,则返回true。
        Specified by:
        isSameFile在接口 JavaFileManager
        参数
        a - 一个文件对象
        b - 一个文件对象
        结果
        如果给定的文件对象代表相同的底层对象,则为true
        异常
        IllegalArgumentException - 如果任一参数是使用另一个文件管理器创建的,并且此文件管理器不支持外部文件对象
      • handleOption

        public boolean handleOption​(String current,
                                    Iterator<String> remaining)
        描述从接口JavaFileManager复制
        处理一个选项 如果current是该文件管理器的选项, remainingremaining使用该选项的任何参数,并返回true,否则返回false。
        Specified by:
        handleOption在接口 JavaFileManager
        参数
        current - 当前选项
        remaining - 剩余选项
        结果
        如果此选项由此文件管理器处理,则为true,否则为false
        异常
        IllegalArgumentException - 如果此文件管理器的此选项被错误地使用
        IllegalStateException - 如果已经调用了 JavaFileManager.close()并且该文件管理器无法重新打开
      • isSupportedOption

        public int isSupportedOption​(String option)
        说明从接口OptionChecker复制
        确定给定选项是否受支持,如果是,该选项的参数数量。
        Specified by:
        isSupportedOption在接口 OptionChecker
        参数
        option - 一个选项
        结果
        给定选项的参数数量,如果该选项不受支持,则为-1
      • getJavaFileForOutput

        public JavaFileObject getJavaFileForOutput​(JavaFileManager.Location location,
                                                   String className,
                                                   JavaFileObject.Kind kind,
                                                   FileObject sibling)
                                            throws IOException
        说明从接口JavaFileManager复制
        返回一个file object,用于在给定的面向对象的位置中表示指定类型的指定类的输出。

        可选地,该文件管理器可以将兄弟姐妹视为提示放置输出的位置。 这个提示的确切语义是未指定的。 例如,JDK编译器javac将将类文件放置在与源文件源相同的目录中,除非提供了一个类文件输出目录。 为了方便这种行为,javac可以在调用此方法时将起始源文件提供为兄弟。

        Specified by:
        getJavaFileForOutput在接口 JavaFileManager
        参数
        location - 面向包的位置
        className - 一个类的名称
        kind - 文件的种类,必须是 SOURCECLASS之一
        sibling - 用作放置提示的文件对象; 可能是null
        结果
        用于输出的文件对象
        异常
        IllegalArgumentException - 如果此文件管理器不知道同级,或者该文件管理器不知道该位置,并且文件管理器不支持未知位置,或者该类型无效,或者该位置不是输出位置
        IllegalStateException - JavaFileManager.close()已被调用,此文件管理器无法重新打开
        IOException - 如果发生I / O错误,或者如果已经调用了 JavaFileManager.close()并且该文件管理器无法重新打开
      • getFileForInput

        public FileObject getFileForInput​(JavaFileManager.Location location,
                                          String packageName,
                                          String relativeName)
                                   throws IOException
        说明从界面JavaFileManager复制
        返回file object用于表示指定的输入relative name中指定的包在给定的取向包位置。

        如果返回的对象表示一个sourceclass文件,那么它必须是JavaFileObject一个实例。

        非法地,此方法返回的文件对象位于位置,包名称和相对名称的并置中。 例如,要查找SOURCE_PATH位置的“com.sun.tools.javac”包中的属性文件“resources / compiler.properties”,可以这样调用此方法:

          getFileForInput(SOURCE_PATH, "com.sun.tools.javac", "resources/compiler.properties"); 

        如果调用在Windows上执行,SOURCE_PATH设置为"C:\Documents and Settings\UncleBob\src\share\classes" ,则有效的结果将是表示文件"C:\Documents and Settings\UncleBob\src\share\classes\com\sun\tools\javac\resources\compiler.properties"的文件对象。

        Specified by:
        getFileForInput在接口 JavaFileManager
        参数
        location - 面向包的位置
        packageName - 一个包名
        relativeName - 相对名称
        结果
        文件对象,如果文件不存在,可能会返回 null
        异常
        IllegalArgumentException - 如果该文件管理器不知道该位置,并且文件管理器不支持未知位置,或者如果 relativeName无效,或者该位置是面向模块的位置
        IllegalStateException - 如果已经调用了 JavaFileManager.close()并且该文件管理器无法重新打开
        IOException - 如果发生I / O错误,或者如果已经调用了 JavaFileManager.close()并且该文件管理器无法重新打开
      • getFileForOutput

        public FileObject getFileForOutput​(JavaFileManager.Location location,
                                           String packageName,
                                           String relativeName,
                                           FileObject sibling)
                                    throws IOException
        说明从接口JavaFileManager复制
        返回file object用于表示指定的输出relative name中指定的包在给定的位置。

        可选地,该文件管理器可以将兄弟姐妹视为提示放置输出的位置。 这个提示的确切语义是未指定的。 例如,JDK编译器javac将将类文件放置在与源文件源相同的目录中,除非提供了一个类文件输出目录。 为了方便这种行为,javac可以在调用此方法时将起始源文件提供为兄弟。

        如果返回的对象表示一个sourceclass文件,那么它必须是JavaFileObject一个实例。

        非法地,此方法返回的文件对象位于位置,包名称和相对名称的连接中,或者位于兄弟参数旁边。 参见getFileForInput的一个例子。

        Specified by:
        getFileForOutput在接口 JavaFileManager
        参数
        location - 输出位置
        packageName - 包名称
        relativeName - 相对名称
        sibling - 用作放置提示的文件对象; 可能是null
        结果
        一个文件对象
        异常
        IllegalArgumentException - 如果此文件管理器不知道同级,或者该文件管理器不知道该位置,并且文件管理器不支持未知位置,或者如果 relativeName无效,或者该位置不是输出位置
        IllegalStateException - 如果已经调用了 JavaFileManager.close()并且该文件管理器无法重新打开
        IOException - 如果发生I / O错误,或者如果已经调用了 JavaFileManager.close()并且该文件管理器无法重新打开
      • close

        public void close​()
                   throws IOException
        描述从接口JavaFileManager复制
        释放此文件管理器直接或间接打开的任何资源。 这可能会使此文件管理器无用,并且对此对象或通过此对象获取的任何对象的方法的后续调用的影响是未定义的,除非明确允许。 但是,关闭已经关闭的文件管理器没有任何效果。
        Specified by:
        close在接口 AutoCloseable
        Specified by:
        close在接口 Closeable
        Specified by:
        close在接口 JavaFileManager
        异常
        IOException - 如果发生I / O错误
        另请参见:
        JavaFileManager.flush()
      • getLocationForModule

        public JavaFileManager.Location getLocationForModule​(JavaFileManager.Location location,
                                                             String moduleName)
                                                      throws IOException
        描述从接口JavaFileManager复制
        在位置中获取命名模块的位置,该位置可以是面向模块的位置或输出位置。 如果给定位置是输出位置,则结果将是输出位置,或者它将是面向包的位置。
        Specified by:
        getLocationForModule在接口 JavaFileManager
        参数
        location - 面向模块的位置
        moduleName - 要找到的模块的名称
        结果
        命名模块的位置
        异常
        IOException - 如果发生I / O错误
        从以下版本开始:
        9
      • getServiceLoader

        public <S> ServiceLoader<S> getServiceLoader​(JavaFileManager.Location location,
                                                     Class<S> service)
                                              throws IOException
        说明从接口JavaFileManager复制
        从给定位置获取特定服务类的服务加载程序。 如果位置是面向模块的位置,则服务加载器将使用该位置中找到的模块中的服务声明。 否则,使用面向包的位置创建服务加载程序,在这种情况下,使用META-INF/services的提供程序配置文件确定服务。
        Specified by:
        getServiceLoader在接口 JavaFileManager
        参数类型
        S - 服务类
        参数
        location - 面向模块的位置
        service - 服务类的 Class对象
        结果
        用于给定服务类的服务加载器
        异常
        IOException - 如果发生I / O错误
        从以下版本开始:
        9
      • contains

        public boolean contains​(JavaFileManager.Location location,
                                FileObject fo)
                         throws IOException
        说明从界面JavaFileManager复制
        确定给定的文件对象是否“包含在”指定的位置。

        对于面向包的位置,如果存在packageNamerelativeName的值,则文件对象将包含在该位置,以便以下任一调用将返回same文件对象:

          getFileForInput(location, packageName, relativeName)
             getFileForOutput(location, packageName, relativeName, null) 

        对于面向模块的位置,如果存在可以通过调用获得的模块,则文件对象包含在该位置中:

          getLocationForModule(location, moduleName) 
        使得文件对象包含在该模块的(面向对象的)位置中。
        Specified by:
        contains在接口 JavaFileManager
        参数
        location - 的位置
        fo - 文件对象
        结果
        该文件是否包含在该位置
        异常
        IOException - 如果确定结果有问题
        从以下版本开始:
        9