Class Loaders

java.lang.Object
org.miaixz.bus.core.lang.loader.Loaders

public abstract class Loaders extends Object
资源加载器工具类
Since:
Java 17+
Author:
Kimi Liu
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static Loader
    ant()
    创建ANT风格路径表达式的资源加载器,这是一个委派加载器,自身并没有资源加载逻辑而是委派给实际的资源加载器, 在这个创建方法中,实际委派给std()资源加载器 示例:
    static Loader
    ant(ClassLoader classLoader)
    创建ANT风格路径表达式的资源加载器,这是一个委派加载器,自身并没有资源加载逻辑而是委派给实际的资源加载器, 在这个创建方法中,实际委派给std(ClassLoader)资源加载器 示例:
    static Loader
    ant(Loader delegate)
    创建ANT风格路径表达式的资源加载器,这是一个委派加载器,自身并没有资源加载逻辑而是委派给实际的资源加载器, 在这个创建方法中,实际委派给delegate资源加载器 示例:
    static Loader
    file(File root)
    创建文件资源加载器
    static Loader
    file(URL fileURL)
    创建文件资源加载器
    static Loader
    file(URL context, File root)
    创建文件资源加载器
    static Loader
    jar(File file)
    创建JAR包资源加载器
    static Loader
    jar(URL jarURL)
    创建JAR包资源加载器
    static Loader
    jar(URL context, JarFile jarFile)
    创建JAR包资源加载器
    static Loader
    nat()
    创建lib包资源加载器
    static Loader
    pkg()
    创建按包名来加载的资源加载器,这是一个委派加载器,自身并没有资源加载逻辑而是委派给实际的资源加载器, 在这个创建方法中,实际委派给std()资源加载器 示例:在std()创建的资源加载器中加载类资源路径表达实际上不太直观,往往采用包名的方式更清晰易懂
    static Loader
    pkg(ClassLoader classLoader)
    创建按包名来加载的资源加载器,这是一个委派加载器,自身并没有资源加载逻辑而是委派给实际的资源加载器, 在这个创建方法中,实际委派给std(ClassLoader)资源加载器 示例:在std()创建的资源加载器中加载类资源路径表达实际上不太直观,往往采用包名的方式更清晰易懂
    static Loader
    pkg(Loader delegate)
    创建按包名来加载的资源加载器,这是一个委派加载器,自身并没有资源加载逻辑而是委派给实际的资源加载器, 在这个创建方法中,实际委派给delegate资源加载器 通过包装一个实际资源加载器可以实现更灵活的加载方式,例如:
    static Loader
    创建正则表达式的资源加载器,这是一个委派加载器,自身并没有资源加载逻辑而是委派给实际的资源加载器, 在这个创建方法中,实际委派给std()资源加载器 示例:
    static Loader
    regex(ClassLoader classLoader)
    创建正则表达式的资源加载器,这是一个委派加载器,自身并没有资源加载逻辑而是委派给实际的资源加载器, 在这个创建方法中,实际委派给std(ClassLoader)资源加载器 示例:
    static Loader
    regex(Loader delegate)
    创建正则表达式的资源加载器,这是一个委派加载器,自身并没有资源加载逻辑而是委派给实际的资源加载器, 在这个创建方法中,实际委派给delegate资源加载器 示例:
    static Loader
    std()
    创建 classpath 资源加载器,也就是对ClassLoader.getResources(String)的增强封装 默认采用 Thread.currentThread()Thread.getContextClassLoader(),作为ClassLoader, 如果当前线程的上下文类加载器为null 则采用ClassLoader.getSystemClassLoader().
    static Loader
    std(ClassLoader classLoader)
    创建 classpath 资源加载器,并且指定ClassLoader 示例:

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • Loaders

      public Loaders()
  • Method Details

    • std

      public static Loader std()
      创建 classpath 资源加载器,也就是对ClassLoader.getResources(String)的增强封装 默认采用 Thread.currentThread()Thread.getContextClassLoader(),作为ClassLoader, 如果当前线程的上下文类加载器为null 则采用ClassLoader.getSystemClassLoader(). 示例:

      1. Loaders.std().load("org/miaixz/bus/core/loader"); 加载classpath中"org/miaixz/bus/core/loader"目录下的所有资源,但不包括子目录

      2. Loaders.std().load("org/", true); 加载classpath中"io/"目录下的所有资源,而且包括子目录

      Returns:
      classpath 资源加载器
    • std

      public static Loader std(ClassLoader classLoader)
      创建 classpath 资源加载器,并且指定ClassLoader 示例:

      1. Loaders.std().load("org/miaixz/bus/core/loader"); 加载classpath中"org/miaixz/bus/core/loader"目录下的所有资源,但不包括子目录

      2. Loaders.std().load("org/", true); 加载classpath中"org/"目录下的所有资源,而且包括子目录

      Parameters:
      classLoader - 加载器
      Returns:
      classpath 资源加载器
    • pkg

      public static Loader pkg()
      创建按包名来加载的资源加载器,这是一个委派加载器,自身并没有资源加载逻辑而是委派给实际的资源加载器, 在这个创建方法中,实际委派给std()资源加载器 示例:在std()创建的资源加载器中加载类资源路径表达实际上不太直观,往往采用包名的方式更清晰易懂

      1. Loaders.pkg().load("io.loadkit"); 加载classpath中"io.loadkit"包下的所有资源,但不包括子包

      2. Loaders.pkg().load("io", true); 加载classpath中"io"包下的所有资源,而且包括子子包

      Returns:
      按包名来加载的资源加载器
    • pkg

      public static Loader pkg(ClassLoader classLoader)
      创建按包名来加载的资源加载器,这是一个委派加载器,自身并没有资源加载逻辑而是委派给实际的资源加载器, 在这个创建方法中,实际委派给std(ClassLoader)资源加载器 示例:在std()创建的资源加载器中加载类资源路径表达实际上不太直观,往往采用包名的方式更清晰易懂

      1. Loaders.pkg().load("org.miaixz.bus.core.lang.loader"); 加载classpath中"org.miaixz.bus.core.lang.loader"包下的所有资源,但不包括子包

      2. Loaders.pkg().load("org", true); 加载classpath中"org"包下的所有资源,而且包括子子包

      Parameters:
      classLoader - 加载器
      Returns:
      按包名来加载的资源加载器
    • pkg

      public static Loader pkg(Loader delegate)
      创建按包名来加载的资源加载器,这是一个委派加载器,自身并没有资源加载逻辑而是委派给实际的资源加载器, 在这个创建方法中,实际委派给delegate资源加载器 通过包装一个实际资源加载器可以实现更灵活的加载方式,例如:

      1. Loaders.pkg(Loaders.ant()).load("org.miaixz.bus.core.lang.loader.*"); 加载org.miaixz.bus.core.loader包下的资源,但不递归加载子包

      2. Loaders.pkg(Loaders.ant()).load("org.**"); 加载io包以及子包的资源,而且递归加载任意层次的子包

      3. Loaders.pkg(Loaders.ant()).load("org.miaixz.bus.core.load???.*"); 加载io包下以load开头并且跟着三个字符的子包的所有资源

      Parameters:
      delegate - 加载器
      Returns:
      按包名来加载的资源加载器
    • ant

      public static Loader ant()
      创建ANT风格路径表达式的资源加载器,这是一个委派加载器,自身并没有资源加载逻辑而是委派给实际的资源加载器, 在这个创建方法中,实际委派给std()资源加载器 示例:

      1. Loaders.ant().load("org/miaixz/bus/core/loader/*"); 加载org/miaixz/bus/core/loader/目录下的资源,但不包括子目录

      2. Loaders.ant().load("io/**"); 加载io/目录下的资源以及递归加载所有子目录的资源

      3. Loaders.ant().load("org/miaixz/bus/core/loader/*Loader.class"); 加载org/miaixz/bus/core/loader/目录下以Loader.class结尾的资源

      Returns:
      按包名来加载的资源加载器
    • ant

      public static Loader ant(ClassLoader classLoader)
      创建ANT风格路径表达式的资源加载器,这是一个委派加载器,自身并没有资源加载逻辑而是委派给实际的资源加载器, 在这个创建方法中,实际委派给std(ClassLoader)资源加载器 示例:

      1. Loaders.ant().load("org/miaixz/bus/core/loader/*"); 加载org/miaixz/bus/core/loader/目录下的资源,但不包括子目录

      2. Loaders.ant().load("org/**"); 加载io/目录下的资源以及递归加载所有子目录的资源

      3. Loaders.ant().load("org/miaixz/bus/core/loader/*Loader.class"); 加载org/miaixz/bus/core/loader/目录下以Loader.class结尾的资源

      Parameters:
      classLoader - 加载器
      Returns:
      按包名来加载的资源加载器
    • ant

      public static Loader ant(Loader delegate)
      创建ANT风格路径表达式的资源加载器,这是一个委派加载器,自身并没有资源加载逻辑而是委派给实际的资源加载器, 在这个创建方法中,实际委派给delegate资源加载器 示例:

      1. Loaders.ant().load("org/miaixz/bus/core/loader/*"); 加载org/miaixz/bus/core/loader/目录下的资源,但不包括子目录

      2. Loaders.ant().load("org/**"); 加载io/目录下的资源以及递归加载所有子目录的资源

      3. Loaders.ant().load("org/miaixz/bus/core/loader/*Loader.class"); 加载org/miaixz/bus/core/loader/目录下以Loader.class结尾的资源

      Parameters:
      delegate - 加载器
      Returns:
      按包名来加载的资源加载器
    • regex

      public static Loader regex()
      创建正则表达式的资源加载器,这是一个委派加载器,自身并没有资源加载逻辑而是委派给实际的资源加载器, 在这个创建方法中,实际委派给std()资源加载器 示例:

      1. Loaders.regex().load("org/miaixz/bus/core/loader/\\w+Loader.class"); 加载org/miaixz/bus/core/loader/目录下以Loader.class结尾的资源

      2. Loaders.regex().load("org/.*"); 加载io包下所有资源

      Returns:
      按包名来加载的资源加载器
    • regex

      public static Loader regex(ClassLoader classLoader)
      创建正则表达式的资源加载器,这是一个委派加载器,自身并没有资源加载逻辑而是委派给实际的资源加载器, 在这个创建方法中,实际委派给std(ClassLoader)资源加载器 示例:

      1. Loaders.regex().load("org/miaixz/bus/core/loader/\\w+Loader.class"); 加载org/miaixz/bus/core/loader/目录下以Loader.class结尾的资源

      2. Loaders.regex().load("org/.*"); 加载io包下所有资源

      Parameters:
      classLoader - 加载器
      Returns:
      按包名来加载的资源加载器
    • regex

      public static Loader regex(Loader delegate)
      创建正则表达式的资源加载器,这是一个委派加载器,自身并没有资源加载逻辑而是委派给实际的资源加载器, 在这个创建方法中,实际委派给delegate资源加载器 示例:

      1. Loaders.regex().load("org/miaixz/bus/core/loader/\\w+Loader.class"); 加载org/miaixz/bus/core/loader/目录下以Loader.class结尾的资源

      2. Loaders.regex().load("org/.*"); 加载io包下所有资源

      Parameters:
      delegate - 加载器
      Returns:
      按包名来加载的资源加载器
    • file

      public static Loader file(File root) throws IOException
      创建文件资源加载器
      Parameters:
      root - 根目录
      Returns:
      文件资源加载器
      Throws:
      IOException - I/O 异常
    • file

      public static Loader file(URL fileURL)
      创建文件资源加载器
      Parameters:
      fileURL - 文件根目录URL地址
      Returns:
      文件资源加载器
    • file

      public static Loader file(URL context, File root)
      创建文件资源加载器
      Parameters:
      context - 文件根目录URL上下文
      root - 根目录
      Returns:
      文件资源加载器
    • jar

      public static Loader jar(File file) throws IOException
      创建JAR包资源加载器
      Parameters:
      file - JAR包文件
      Returns:
      AR包资源加载器
      Throws:
      IOException - I/O 异常
    • jar

      public static Loader jar(URL jarURL) throws IOException
      创建JAR包资源加载器
      Parameters:
      jarURL - JAR包URL地址
      Returns:
      文件资源加载器
      Throws:
      IOException - I/O 异常
    • jar

      public static Loader jar(URL context, JarFile jarFile)
      创建JAR包资源加载器
      Parameters:
      context - JAR包URL上下文
      jarFile - JAR文件
      Returns:
      JAR包资源加载器
    • nat

      public static Loader nat()
      创建lib包资源加载器

      从当前JAR归档总加载动态库信息dll/so加载库 1.将文件从当前JAR存档复制到系统临时目录 2.JAR中的文件被复制到系统临时目录中,然后加载。退出后将删除临时文件.

      Returns:
      资源加载器