org.springframework.util

Class ResourceUtils

  • java.lang.Object
    • org.springframework.util.ResourceUtils


  • public abstract class ResourceUtils
    extends java.lang.Object
    Utility methods for resolving resource locations to files in the file system. Mainly for internal use within the framework.

    Consider using Spring's Resource abstraction in the core package for handling all kinds of file resources in a uniform manner. ResourceLoader's getResource() method can resolve any location to a Resource object, which in turn allows one to obtain a java.io.File in the file system through its getFile() method.

    Since:
    1.1.5
    Author:
    Juergen Hoeller
    See Also:
    Resource, ClassPathResource, FileSystemResource, UrlResource, ResourceLoader
    • Field Summary

      Fields 
      Modifier and Type Field and Description
      static java.lang.String CLASSPATH_URL_PREFIX
      Pseudo URL prefix for loading from the class path: "classpath:".
      static java.lang.String FILE_URL_PREFIX
      URL prefix for loading from the file system: "file:".
      static java.lang.String JAR_FILE_EXTENSION
      File extension for a regular jar file: ".jar".
      static java.lang.String JAR_URL_PREFIX
      URL prefix for loading from a jar file: "jar:".
      static java.lang.String JAR_URL_SEPARATOR
      Separator between JAR URL and file path within the JAR: "!/".
      static java.lang.String URL_PROTOCOL_FILE
      URL protocol for a file in the file system: "file".
      static java.lang.String URL_PROTOCOL_JAR
      URL protocol for an entry from a jar file: "jar".
      static java.lang.String URL_PROTOCOL_VFS
      URL protocol for a general JBoss VFS resource: "vfs".
      static java.lang.String URL_PROTOCOL_VFSFILE
      URL protocol for a JBoss file system resource: "vfsfile".
      static java.lang.String URL_PROTOCOL_VFSZIP
      URL protocol for an entry from a JBoss jar file: "vfszip".
      static java.lang.String URL_PROTOCOL_WAR
      URL protocol for an entry from a war file: "war".
      static java.lang.String URL_PROTOCOL_WSJAR
      URL protocol for an entry from a WebSphere jar file: "wsjar".
      static java.lang.String URL_PROTOCOL_ZIP
      URL protocol for an entry from a zip file: "zip".
      static java.lang.String WAR_URL_PREFIX
      URL prefix for loading from a war file on Tomcat: "war:".
      static java.lang.String WAR_URL_SEPARATOR
      Special separator between WAR URL and jar part on Tomcat.
    • Constructor Summary

      Constructors 
      Constructor and Description
      ResourceUtils() 
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method and Description
      static java.net.URL extractArchiveURL(java.net.URL jarUrl)
      Extract the URL for the outermost archive from the given jar/war URL (which may point to a resource in a jar file or to a jar file itself).
      static java.net.URL extractJarFileURL(java.net.URL jarUrl)
      Extract the URL for the actual jar file from the given URL (which may point to a resource in a jar file or to a jar file itself).
      static java.io.File getFile(java.lang.String resourceLocation)
      Resolve the given resource location to a java.io.File, i.e.
      static java.io.File getFile(java.net.URI resourceUri)
      Resolve the given resource URI to a java.io.File, i.e.
      static java.io.File getFile(java.net.URI resourceUri, java.lang.String description)
      Resolve the given resource URI to a java.io.File, i.e.
      static java.io.File getFile(java.net.URL resourceUrl)
      Resolve the given resource URL to a java.io.File, i.e.
      static java.io.File getFile(java.net.URL resourceUrl, java.lang.String description)
      Resolve the given resource URL to a java.io.File, i.e.
      static java.net.URL getURL(java.lang.String resourceLocation)
      Resolve the given resource location to a java.net.URL.
      static boolean isFileURL(java.net.URL url)
      Determine whether the given URL points to a resource in the file system, i.e.
      static boolean isJarFileURL(java.net.URL url)
      Determine whether the given URL points to a jar file itself, that is, has protocol "file" and ends with the ".jar" extension.
      static boolean isJarURL(java.net.URL url)
      Determine whether the given URL points to a resource in a jar file.
      static boolean isUrl(java.lang.String resourceLocation)
      Return whether the given resource location is a URL: either a special "classpath" pseudo URL or a standard URL.
      static java.net.URI toURI(java.lang.String location)
      Create a URI instance for the given location String, replacing spaces with "%20" URI encoding first.
      static java.net.URI toURI(java.net.URL url)
      Create a URI instance for the given URL, replacing spaces with "%20" URI encoding first.
      static void useCachesIfNecessary(java.net.URLConnection con)
      Set the "useCaches" flag on the given connection, preferring false but leaving the flag at true for JNLP based resources.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • CLASSPATH_URL_PREFIX

        public static final java.lang.String CLASSPATH_URL_PREFIX
        Pseudo URL prefix for loading from the class path: "classpath:".
        See Also:
        Constant Field Values
      • FILE_URL_PREFIX

        public static final java.lang.String FILE_URL_PREFIX
        URL prefix for loading from the file system: "file:".
        See Also:
        Constant Field Values
      • JAR_URL_PREFIX

        public static final java.lang.String JAR_URL_PREFIX
        URL prefix for loading from a jar file: "jar:".
        See Also:
        Constant Field Values
      • WAR_URL_PREFIX

        public static final java.lang.String WAR_URL_PREFIX
        URL prefix for loading from a war file on Tomcat: "war:".
        See Also:
        Constant Field Values
      • URL_PROTOCOL_FILE

        public static final java.lang.String URL_PROTOCOL_FILE
        URL protocol for a file in the file system: "file".
        See Also:
        Constant Field Values
      • URL_PROTOCOL_JAR

        public static final java.lang.String URL_PROTOCOL_JAR
        URL protocol for an entry from a jar file: "jar".
        See Also:
        Constant Field Values
      • URL_PROTOCOL_WAR

        public static final java.lang.String URL_PROTOCOL_WAR
        URL protocol for an entry from a war file: "war".
        See Also:
        Constant Field Values
      • URL_PROTOCOL_ZIP

        public static final java.lang.String URL_PROTOCOL_ZIP
        URL protocol for an entry from a zip file: "zip".
        See Also:
        Constant Field Values
      • URL_PROTOCOL_WSJAR

        public static final java.lang.String URL_PROTOCOL_WSJAR
        URL protocol for an entry from a WebSphere jar file: "wsjar".
        See Also:
        Constant Field Values
      • URL_PROTOCOL_VFSZIP

        public static final java.lang.String URL_PROTOCOL_VFSZIP
        URL protocol for an entry from a JBoss jar file: "vfszip".
        See Also:
        Constant Field Values
      • URL_PROTOCOL_VFSFILE

        public static final java.lang.String URL_PROTOCOL_VFSFILE
        URL protocol for a JBoss file system resource: "vfsfile".
        See Also:
        Constant Field Values
      • URL_PROTOCOL_VFS

        public static final java.lang.String URL_PROTOCOL_VFS
        URL protocol for a general JBoss VFS resource: "vfs".
        See Also:
        Constant Field Values
      • JAR_FILE_EXTENSION

        public static final java.lang.String JAR_FILE_EXTENSION
        File extension for a regular jar file: ".jar".
        See Also:
        Constant Field Values
      • JAR_URL_SEPARATOR

        public static final java.lang.String JAR_URL_SEPARATOR
        Separator between JAR URL and file path within the JAR: "!/".
        See Also:
        Constant Field Values
      • WAR_URL_SEPARATOR

        public static final java.lang.String WAR_URL_SEPARATOR
        Special separator between WAR URL and jar part on Tomcat.
        See Also:
        Constant Field Values
    • Constructor Detail

      • ResourceUtils

        public ResourceUtils()
    • Method Detail

      • isUrl

        public static boolean isUrl(@Nullable
                                    java.lang.String resourceLocation)
        Return whether the given resource location is a URL: either a special "classpath" pseudo URL or a standard URL.
        Parameters:
        resourceLocation - the location String to check
        Returns:
        whether the location qualifies as a URL
        See Also:
        CLASSPATH_URL_PREFIX, URL
      • getURL

        public static java.net.URL getURL(java.lang.String resourceLocation)
                                   throws java.io.FileNotFoundException
        Resolve the given resource location to a java.net.URL.

        Does not check whether the URL actually exists; simply returns the URL that the given location would correspond to.

        Parameters:
        resourceLocation - the resource location to resolve: either a "classpath:" pseudo URL, a "file:" URL, or a plain file path
        Returns:
        a corresponding URL object
        Throws:
        java.io.FileNotFoundException - if the resource cannot be resolved to a URL
      • getFile

        public static java.io.File getFile(java.lang.String resourceLocation)
                                    throws java.io.FileNotFoundException
        Resolve the given resource location to a java.io.File, i.e. to a file in the file system.

        Does not check whether the file actually exists; simply returns the File that the given location would correspond to.

        Parameters:
        resourceLocation - the resource location to resolve: either a "classpath:" pseudo URL, a "file:" URL, or a plain file path
        Returns:
        a corresponding File object
        Throws:
        java.io.FileNotFoundException - if the resource cannot be resolved to a file in the file system
      • getFile

        public static java.io.File getFile(java.net.URL resourceUrl)
                                    throws java.io.FileNotFoundException
        Resolve the given resource URL to a java.io.File, i.e. to a file in the file system.
        Parameters:
        resourceUrl - the resource URL to resolve
        Returns:
        a corresponding File object
        Throws:
        java.io.FileNotFoundException - if the URL cannot be resolved to a file in the file system
      • getFile

        public static java.io.File getFile(java.net.URL resourceUrl,
                                           java.lang.String description)
                                    throws java.io.FileNotFoundException
        Resolve the given resource URL to a java.io.File, i.e. to a file in the file system.
        Parameters:
        resourceUrl - the resource URL to resolve
        description - a description of the original resource that the URL was created for (for example, a class path location)
        Returns:
        a corresponding File object
        Throws:
        java.io.FileNotFoundException - if the URL cannot be resolved to a file in the file system
      • getFile

        public static java.io.File getFile(java.net.URI resourceUri)
                                    throws java.io.FileNotFoundException
        Resolve the given resource URI to a java.io.File, i.e. to a file in the file system.
        Parameters:
        resourceUri - the resource URI to resolve
        Returns:
        a corresponding File object
        Throws:
        java.io.FileNotFoundException - if the URL cannot be resolved to a file in the file system
        Since:
        2.5
      • getFile

        public static java.io.File getFile(java.net.URI resourceUri,
                                           java.lang.String description)
                                    throws java.io.FileNotFoundException
        Resolve the given resource URI to a java.io.File, i.e. to a file in the file system.
        Parameters:
        resourceUri - the resource URI to resolve
        description - a description of the original resource that the URI was created for (for example, a class path location)
        Returns:
        a corresponding File object
        Throws:
        java.io.FileNotFoundException - if the URL cannot be resolved to a file in the file system
        Since:
        2.5
      • isFileURL

        public static boolean isFileURL(java.net.URL url)
        Determine whether the given URL points to a resource in the file system, i.e. has protocol "file", "vfsfile" or "vfs".
        Parameters:
        url - the URL to check
        Returns:
        whether the URL has been identified as a file system URL
      • isJarURL

        public static boolean isJarURL(java.net.URL url)
        Determine whether the given URL points to a resource in a jar file. i.e. has protocol "jar", "war, ""zip", "vfszip" or "wsjar".
        Parameters:
        url - the URL to check
        Returns:
        whether the URL has been identified as a JAR URL
      • isJarFileURL

        public static boolean isJarFileURL(java.net.URL url)
        Determine whether the given URL points to a jar file itself, that is, has protocol "file" and ends with the ".jar" extension.
        Parameters:
        url - the URL to check
        Returns:
        whether the URL has been identified as a JAR file URL
        Since:
        4.1
      • extractJarFileURL

        public static java.net.URL extractJarFileURL(java.net.URL jarUrl)
                                              throws java.net.MalformedURLException
        Extract the URL for the actual jar file from the given URL (which may point to a resource in a jar file or to a jar file itself).
        Parameters:
        jarUrl - the original URL
        Returns:
        the URL for the actual jar file
        Throws:
        java.net.MalformedURLException - if no valid jar file URL could be extracted
      • extractArchiveURL

        public static java.net.URL extractArchiveURL(java.net.URL jarUrl)
                                              throws java.net.MalformedURLException
        Extract the URL for the outermost archive from the given jar/war URL (which may point to a resource in a jar file or to a jar file itself).

        In the case of a jar file nested within a war file, this will return a URL to the war file since that is the one resolvable in the file system.

        Parameters:
        jarUrl - the original URL
        Returns:
        the URL for the actual jar file
        Throws:
        java.net.MalformedURLException - if no valid jar file URL could be extracted
        Since:
        4.1.8
        See Also:
        extractJarFileURL(URL)
      • toURI

        public static java.net.URI toURI(java.net.URL url)
                                  throws java.net.URISyntaxException
        Create a URI instance for the given URL, replacing spaces with "%20" URI encoding first.
        Parameters:
        url - the URL to convert into a URI instance
        Returns:
        the URI instance
        Throws:
        java.net.URISyntaxException - if the URL wasn't a valid URI
        See Also:
        URL.toURI()
      • toURI

        public static java.net.URI toURI(java.lang.String location)
                                  throws java.net.URISyntaxException
        Create a URI instance for the given location String, replacing spaces with "%20" URI encoding first.
        Parameters:
        location - the location String to convert into a URI instance
        Returns:
        the URI instance
        Throws:
        java.net.URISyntaxException - if the location wasn't a valid URI
      • useCachesIfNecessary

        public static void useCachesIfNecessary(java.net.URLConnection con)
        Set the "useCaches" flag on the given connection, preferring false but leaving the flag at true for JNLP based resources.
        Parameters:
        con - the URLConnection to set the flag on