类 ResourceUtil


  • public abstract class ResourceUtil
    extends Object
    用于将资源位置解析为文件系统中的文件的实用工具方法
    • 方法概要

      所有方法 静态方法 具体方法 
      修饰符和类型 方法 说明
      static @NotNull URL extractJarFileURL​(@NotNull URL jarUrl)
      从给定的 URL(可能指向 jar 文件中的资源或 jar 文件本身)中提取实际 jar 文件的 URL
      static @NotNull File getFile​(@NotNull String resourceLocation)
      将给定的资源位置解析为 java.io.File,即文件系统中的文件
      static @NotNull File getFile​(@NotNull URL resourceUrl, String description)
      将给定的资源 URL 解析为 java.io.File,即文件系统中的文件.
      static @NotNull File getFile​(URL resourceUrl)
      将给定的资源 URL 解析为 java.io.File,即文件系统中的文件
      static @NotNull Resource getResource​(@NotNull String resourceLocation)
      获取资源对象
      static @NotNull URL getURL​(@NotNull String resourceLocation)
      将给定的资源位置解析为 java.net.URL
      static boolean isFileURL​(@NotNull URL url)
      确定给定的 URL 是否指向文件系统中的资源
      static boolean isJarFileURL​(@NotNull URL url)
      确定给定的 URL 是否指向 jar 文件本身,即具有协议 file 并以 .jar 扩展名结尾
      static boolean isJarURL​(@NotNull URL url)
      确定给定的 URL 是否指向 jar 文件中的资源
      static boolean isUrl​(@Nullable String resourceLocation)
      返回给定的资源位置是否为 URL
      static String normalize​(String path)
      修复路径
      如果原路径尾部有分隔符,则保留为标准分隔符(/),否则不保留 1.
      static @NotNull URI toURI​(@NotNull String location)
      为给定位置字符串创建一个 URI 实例,首先将空格替换为 %20 URI 编码
      static @NotNull URI toURI​(@NotNull URL url)
      为给定 URL 创建一个 URI 实例,首先将空格替换为 %20 URI 编码
    • 字段详细资料

      • CLASSPATH_URL_PREFIX

        public static final String CLASSPATH_URL_PREFIX
        用于从类路径加载的伪 URL 前缀: "classpath:".
        另请参阅:
        常量字段值
      • FILE_URL_PREFIX

        public static final String FILE_URL_PREFIX
        用于从文件系统加载的 URL 前缀: "file:".
        另请参阅:
        常量字段值
      • JAR_URL_PREFIX

        public static final String JAR_URL_PREFIX
        用于从 jar 文件加载的 URL 前缀: "jar:".
        另请参阅:
        常量字段值
      • URL_PROTOCOL_FILE

        public static final String URL_PROTOCOL_FILE
        文件系统中文件的 URL 协议:"file".
        另请参阅:
        常量字段值
      • URL_PROTOCOL_JAR

        public static final String URL_PROTOCOL_JAR
        jar 文件中条目的 URL 协议: "jar".
        另请参阅:
        常量字段值
      • URL_PROTOCOL_ZIP

        public static final String URL_PROTOCOL_ZIP
        来自 zip 文件的条目的 URL 协议:"zip".
        另请参阅:
        常量字段值
      • JAR_FILE_EXTENSION

        public static final String JAR_FILE_EXTENSION
        常规 jar 文件的文件扩展名: ".jar".
        另请参阅:
        常量字段值
      • JAR_URL_SEPARATOR

        public static final String JAR_URL_SEPARATOR
        JAR URL 和 JAR 中的文件路径之间的分隔符: "!/".
        另请参阅:
        常量字段值
    • 构造器详细资料

      • ResourceUtil

        public ResourceUtil()
    • 方法详细资料

      • getResource

        @NotNull
        @Contract("_ -> new")
        public static @NotNull Resource getResource​(@NotNull
                                                    @NotNull String resourceLocation)
        获取资源对象
        参数:
        resourceLocation - 资源路径
        返回:
        Resource
      • isUrl

        public static boolean isUrl​(@Nullable
                                    @Nullable String resourceLocation)
        返回给定的资源位置是否为 URL
        另请参阅:
        CLASSPATH_URL_PREFIX, URL
      • getURL

        @NotNull
        public static @NotNull URL getURL​(@NotNull
                                          @NotNull String resourceLocation)
                                   throws FileNotFoundException
        将给定的资源位置解析为 java.net.URL
        参数:
        resourceLocation - 要解析的资源位置
        返回:
        URL
        抛出:
        FileNotFoundException - 如果无法将资源解析为 URL
      • getFile

        @NotNull
        public static @NotNull File getFile​(@NotNull
                                            @NotNull String resourceLocation)
                                     throws FileNotFoundException
        将给定的资源位置解析为 java.io.File,即文件系统中的文件

        不检查文件是否实际存在,只需返回给定位置对应的文件

        参数:
        resourceLocation - 要解析的资源位置
        返回:
        相应的文件对象
        抛出:
        FileNotFoundException - 如果无法将资源解析为文件系统中的文件
      • getFile

        @Contract("_ -> new")
        @NotNull
        public static @NotNull File getFile​(URL resourceUrl)
                                     throws FileNotFoundException
        将给定的资源 URL 解析为 java.io.File,即文件系统中的文件
        参数:
        resourceUrl - 要解析的资源 URL
        返回:
        相应的文件对象
        抛出:
        FileNotFoundException - 如果无法将 URL 解析为文件系统中的文件
      • getFile

        @NotNull
        @Contract("_, _ -> new")
        public static @NotNull File getFile​(@NotNull
                                            @NotNull URL resourceUrl,
                                            String description)
                                     throws FileNotFoundException
        将给定的资源 URL 解析为 java.io.File,即文件系统中的文件.
        参数:
        resourceUrl - 要解析的资源 URL
        description - 为其创建 URL 的原始资源的说明(例如,类路径位置)
        返回:
        相应的文件对象
        抛出:
        FileNotFoundException - 如果无法将 URL 解析为文件系统中的文件
      • isFileURL

        public static boolean isFileURL​(@NotNull
                                        @NotNull URL url)
        确定给定的 URL 是否指向文件系统中的资源
        另请参阅:
        URL_PROTOCOL_FILE
      • isJarURL

        public static boolean isJarURL​(@NotNull
                                       @NotNull URL url)
        确定给定的 URL 是否指向 jar 文件中的资源
        另请参阅:
        URL_PROTOCOL_JAR, URL_PROTOCOL_ZIP
      • isJarFileURL

        public static boolean isJarFileURL​(@NotNull
                                           @NotNull URL url)
        确定给定的 URL 是否指向 jar 文件本身,即具有协议 file 并以 .jar 扩展名结尾
      • extractJarFileURL

        @NotNull
        public static @NotNull URL extractJarFileURL​(@NotNull
                                                     @NotNull URL jarUrl)
                                              throws MalformedURLException
        从给定的 URL(可能指向 jar 文件中的资源或 jar 文件本身)中提取实际 jar 文件的 URL
        参数:
        jarUrl - jarUrl
        返回:
        实际 jar 文件的 URL
        抛出:
        MalformedURLException - 如果无法提取有效的 jar 文件 URL
      • toURI

        @NotNull
        @Contract("_ -> new")
        public static @NotNull URI toURI​(@NotNull
                                         @NotNull URL url)
                                  throws URISyntaxException
        为给定 URL 创建一个 URI 实例,首先将空格替换为 %20 URI 编码
        参数:
        url - 要转换为 URI 实例的 URL
        返回:
        URI 实例
        抛出:
        URISyntaxException - 如果网址不是有效的 URI
        另请参阅:
        URL.toURI()
      • toURI

        @Contract("_ -> new")
        @NotNull
        public static @NotNull URI toURI​(@NotNull
                                         @NotNull String location)
                                  throws URISyntaxException
        为给定位置字符串创建一个 URI 实例,首先将空格替换为 %20 URI 编码
        参数:
        location - 要转换为 URI 实例的位置字符串
        返回:
        URI 实例
        抛出:
        URISyntaxException - 如果网址不是有效的 URI
      • normalize

        public static String normalize​(String path)
        修复路径
        如果原路径尾部有分隔符,则保留为标准分隔符(/),否则不保留
        1. 1. 统一用 /
        2. 2. 多个 / 转换为一个 /
        3. 3. 去除左边空格
        4. 4. .. 和 . 转换为绝对路径,当..多于已有路径时,直接返回根路径

        栗子:

         "/foo//" =》 "/foo/"
         "/foo/./" =》 "/foo/"
         "/foo/../bar" =》 "/bar"
         "/foo/../bar/" =》 "/bar/"
         "/foo/../bar/../baz" =》 "/baz"
         "/../" =》 "/"
         "foo/bar/.." =》 "foo"
         "foo/../bar" =》 "bar"
         "foo/../../bar" =》 "bar"
         "//server/foo/../bar" =》 "/server/bar"
         "//server/../bar" =》 "/bar"
         "C:\\foo\\..\\bar" =》 "C:/bar"
         "C:\\..\\bar" =》 "C:/bar"
         "~/foo/../bar/" =》 "~/bar/"
         "~/../bar" =》 普通用户运行是'bar的home目录',ROOT用户运行是'/bar'
         
        参数:
        path - 原路径
        返回:
        修复后的路径