Package org.springframework.util

# Class ResourceUtils

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

public abstract class ResourceUtils extends 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
Description
`static final String`
`CLASSPATH_URL_PREFIX`
Pseudo URL prefix for loading from the class path: "classpath:".
`static final String`
`FILE_URL_PREFIX`
URL prefix for loading from the file system: "file:".
`static final String`
`JAR_FILE_EXTENSION`
File extension for a regular jar file: ".jar".
`static final String`
`JAR_URL_PREFIX`
URL prefix for loading from a jar file: "jar:".
`static final String`
`JAR_URL_SEPARATOR`
Separator between JAR URL and file path within the JAR: "!/".
`static final String`
`URL_PROTOCOL_FILE`
URL protocol for a file in the file system: "file".
`static final String`
`URL_PROTOCOL_JAR`
URL protocol for an entry from a jar file: "jar".
`static final String`
`URL_PROTOCOL_VFS`
URL protocol for a general JBoss VFS resource: "vfs".
`static final String`
`URL_PROTOCOL_VFSFILE`
URL protocol for a JBoss file system resource: "vfsfile".
`static final String`
`URL_PROTOCOL_VFSZIP`
URL protocol for an entry from a JBoss jar file: "vfszip".
`static final String`
`URL_PROTOCOL_WAR`
URL protocol for an entry from a war file: "war".
`static final String`
`URL_PROTOCOL_WSJAR`
URL protocol for an entry from a WebSphere jar file: "wsjar".
`static final String`
`URL_PROTOCOL_ZIP`
URL protocol for an entry from a zip file: "zip".
`static final String`
`WAR_URL_PREFIX`
URL prefix for loading from a war file on Tomcat: "war:".
`static final String`
`WAR_URL_SEPARATOR`
Special separator between WAR URL and jar part on Tomcat.

## Constructor Summary

Constructors
Constructor
Description
`ResourceUtils()`

## Method Summary

Modifier and Type
Method
Description
`static URL`
`extractArchiveURL(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 URL`
`extractJarFileURL(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 File`
`getFile(String resourceLocation)`
Resolve the given resource location to a `java.io.File`, i.e.
`static File`
`getFile(URI resourceUri)`
Resolve the given resource URI to a `java.io.File`, i.e.
`static File`
`getFile(URI resourceUri, String description)`
Resolve the given resource URI to a `java.io.File`, i.e.
`static File`
`getFile(URL resourceUrl)`
Resolve the given resource URL to a `java.io.File`, i.e.
`static File`
`getFile(URL resourceUrl, String description)`
Resolve the given resource URL to a `java.io.File`, i.e.
`static URL`
`getURL(String resourceLocation)`
Resolve the given resource location to a `java.net.URL`.
`static boolean`
`isFileURL(URL url)`
Determine whether the given URL points to a resource in the file system, i.e.
`static boolean`
`isJarFileURL(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(URL url)`
Determine whether the given URL points to a resource in a jar file — for example, whether the URL has protocol "jar", "war, "zip", "vfszip", or "wsjar".
`static boolean`
`isUrl(String resourceLocation)`
Return whether the given resource location is a URL: either a special "classpath" pseudo URL or a standard URL.
`static URL`
`toRelativeURL(URL root, String relativePath)`
Create a clean URL instance for the given root URL and relative path, going through URI construction and then URL conversion.
`static URI`
`toURI(String location)`
Create a URI instance for the given location String, replacing spaces with "%20" URI encoding first.
`static URI`
`toURI(URL url)`
Create a URI instance for the given URL, replacing spaces with "%20" URI encoding first.
`static URL`
`toURL(String location)`
Create a clean URL instance for the given location String, going through URI construction and then URL conversion.
`static void`
`useCachesIfNecessary(URLConnection con)`
Set the `"useCaches"` flag on the given connection, preferring `false` but leaving the flag at its JVM default value for jar resources (typically `true`).

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### CLASSPATH_URL_PREFIX

public static final 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 String FILE_URL_PREFIX
URL prefix for loading from the file system: "file:".

See Also:
  - Constant Field Values

### JAR_URL_PREFIX

public static final String JAR_URL_PREFIX
URL prefix for loading from a jar file: "jar:".

See Also:
  - Constant Field Values

### WAR_URL_PREFIX

public static final 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 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 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 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 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 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 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 String URL_PROTOCOL_VFSFILE
URL protocol for a JBoss file system resource: "vfsfile".

See Also:
  - Constant Field Values

### URL_PROTOCOL_VFS

public static final String URL_PROTOCOL_VFS
URL protocol for a general JBoss VFS resource: "vfs".

See Also:
  - Constant Field Values

### JAR_FILE_EXTENSION

public static final String JAR_FILE_EXTENSION
File extension for a regular jar file: ".jar".

See Also:
  - Constant Field Values

### JAR_URL_SEPARATOR

public static final 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 String WAR_URL_SEPARATOR
Special separator between WAR URL and jar part on Tomcat.

See Also:
  - Constant Field Values

## Constructor Details

### ResourceUtils

public ResourceUtils()

## Method Details

### isUrl

public static boolean isUrl(@Nullable 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`
  - `toURL(String)`

### getURL

public static URL getURL(String resourceLocation) throws 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:
  `FileNotFoundException` - if the resource cannot be resolved to a URL
See Also:
  - `toURL(String)`

### getFile

public static File getFile(String resourceLocation) throws 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:
  `FileNotFoundException` - if the resource cannot be resolved to a file in the file system
See Also:
  - `getFile(URL)`

### getFile

public static File getFile(URL resourceUrl) throws 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:
  `FileNotFoundException` - if the URL cannot be resolved to a file in the file system
See Also:
  - `getFile(URL, String)`

### getFile

public static File getFile(URL resourceUrl, String description) throws 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:
  `FileNotFoundException` - if the URL cannot be resolved to a file in the file system

### getFile

public static File getFile(URI resourceUri) throws 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:
  `FileNotFoundException` - if the URL cannot be resolved to a file in the file system
Since:
  2.5
See Also:
  - `getFile(URI, String)`

### getFile

public static File getFile(URI resourceUri, String description) throws 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:
  `FileNotFoundException` - if the URL cannot be resolved to a file in the file system
Since:
  2.5

### isFileURL

public static boolean isFileURL(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
See Also:
  - `isJarURL(URL)`

### isJarURL

public static boolean isJarURL(URL url)
Determine whether the given URL points to a resource in a jar file — for example, whether the URL 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
See Also:
  - `isJarFileURL(URL)`

### isJarFileURL

public static boolean isJarFileURL(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
See Also:
  - `extractJarFileURL(URL)`

### extractJarFileURL

public static URL extractJarFileURL(URL jarUrl) throws 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:
  `MalformedURLException` - if no valid jar file URL could be extracted
See Also:
  - `extractArchiveURL(URL)`

### extractArchiveURL

public static URL extractArchiveURL(URL jarUrl) throws 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:
  `MalformedURLException` - if no valid jar file URL could be extracted
Since:
  4.1.8
See Also:
  - `extractJarFileURL(URL)`

### toURI

public static URI toURI(URL url) throws 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:
  `URISyntaxException` - if the URL wasn't a valid URI
See Also:
  - `URL.toURI()`
  - `toURI(String)`

### toURI

public static URI toURI(String location) throws 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:
  `URISyntaxException` - if the location wasn't a valid URI
See Also:
  - `toURI(URL)`

### toURL

public static URL toURL(String location) throws MalformedURLException
Create a clean URL instance for the given location String, going through URI construction and then URL conversion.

Parameters:
  `location` - the location String to convert into a URL instance
Returns:
  the URL instance
Throws:
  `MalformedURLException` - if the location wasn't a valid URL
Since:
  6.0
See Also:
  - `URI.toURL()`
  - `toURI(String)`

### toRelativeURL

public static URL toRelativeURL(URL root, String relativePath) throws MalformedURLException
Create a clean URL instance for the given root URL and relative path, going through URI construction and then URL conversion.

Parameters:
  `root` - the root URL to start from
  `relativePath` - the relative path to apply
Returns:
  the relative URL instance
Throws:
  `MalformedURLException` - if the end result is not a valid URL
Since:
  6.0
See Also:
  - `toURL(String)`
  - `StringUtils.applyRelativePath(java.lang.String, java.lang.String)`

### useCachesIfNecessary

public static void useCachesIfNecessary(URLConnection con)
Set the `"useCaches"` flag on the given connection, preferring `false` but leaving the flag at its JVM default value for jar resources (typically `true`).

Parameters:
  `con` - the URLConnection to set the flag on
See Also:
  - `URLConnection.setUseCaches(boolean)`