public abstract class ResourceUtils extends Object
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.
Resource
,
ClassPathResource
,
FileSystemResource
,
UrlResource
,
ResourceLoader
Modifier and Type | Field and Description |
---|---|
static String |
CLASSPATH_URL_PREFIX
Pseudo URL prefix for loading from the class path: "classpath:"
|
static String |
FILE_URL_PREFIX
URL prefix for loading from the file system: "file:"
|
static String |
JAR_FILE_EXTENSION
File extension for a regular jar file: ".jar"
|
static String |
JAR_URL_PREFIX
URL prefix for loading from a jar file: "jar:"
|
static String |
JAR_URL_SEPARATOR
Separator between JAR URL and file path within the JAR: "!/"
|
static String |
URL_PROTOCOL_FILE
URL protocol for a file in the file system: "file"
|
static String |
URL_PROTOCOL_JAR
URL protocol for an entry from a jar file: "jar"
|
static String |
URL_PROTOCOL_VFS
URL protocol for a general JBoss VFS resource: "vfs"
|
static String |
URL_PROTOCOL_VFSFILE
URL protocol for a JBoss file system resource: "vfsfile"
|
static String |
URL_PROTOCOL_VFSZIP
URL protocol for an entry from a JBoss jar file: "vfszip"
|
static String |
URL_PROTOCOL_WAR
URL protocol for an entry from a war file: "war"
|
static String |
URL_PROTOCOL_WSJAR
URL protocol for an entry from a WebSphere jar file: "wsjar"
|
static String |
URL_PROTOCOL_ZIP
URL protocol for an entry from a zip file: "zip"
|
static String |
WAR_URL_PREFIX
URL prefix for loading from a war file on Tomcat: "war:"
|
static String |
WAR_URL_SEPARATOR
Special separator between WAR URL and jar part on Tomcat
|
Constructor and Description |
---|
ResourceUtils() |
Modifier and Type | Method and 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.
|
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 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 void |
useCachesIfNecessary(URLConnection con)
Set the
"useCaches" flag on the
given connection, preferring false but leaving the
flag at true for JNLP based resources. |
public static final String CLASSPATH_URL_PREFIX
public static final String FILE_URL_PREFIX
public static final String JAR_URL_PREFIX
public static final String WAR_URL_PREFIX
public static final String URL_PROTOCOL_FILE
public static final String URL_PROTOCOL_JAR
public static final String URL_PROTOCOL_WAR
public static final String URL_PROTOCOL_ZIP
public static final String URL_PROTOCOL_WSJAR
public static final String URL_PROTOCOL_VFSZIP
public static final String URL_PROTOCOL_VFSFILE
public static final String URL_PROTOCOL_VFS
public static final String JAR_FILE_EXTENSION
public static final String JAR_URL_SEPARATOR
public static final String WAR_URL_SEPARATOR
public static boolean isUrl(@Nullable String resourceLocation)
resourceLocation
- the location String to checkCLASSPATH_URL_PREFIX
,
URL
public static URL getURL(String resourceLocation) throws FileNotFoundException
java.net.URL
.
Does not check whether the URL actually exists; simply returns the URL that the given location would correspond to.
resourceLocation
- the resource location to resolve: either a
"classpath:" pseudo URL, a "file:" URL, or a plain file pathFileNotFoundException
- if the resource cannot be resolved to a URLpublic static File getFile(String resourceLocation) throws FileNotFoundException
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.
resourceLocation
- the resource location to resolve: either a
"classpath:" pseudo URL, a "file:" URL, or a plain file pathFileNotFoundException
- if the resource cannot be resolved to
a file in the file systempublic static File getFile(URL resourceUrl) throws FileNotFoundException
java.io.File
,
i.e. to a file in the file system.resourceUrl
- the resource URL to resolveFileNotFoundException
- if the URL cannot be resolved to
a file in the file systempublic static File getFile(URL resourceUrl, String description) throws FileNotFoundException
java.io.File
,
i.e. to a file in the file system.resourceUrl
- the resource URL to resolvedescription
- a description of the original resource that
the URL was created for (for example, a class path location)FileNotFoundException
- if the URL cannot be resolved to
a file in the file systempublic static File getFile(URI resourceUri) throws FileNotFoundException
java.io.File
,
i.e. to a file in the file system.resourceUri
- the resource URI to resolveFileNotFoundException
- if the URL cannot be resolved to
a file in the file systempublic static File getFile(URI resourceUri, String description) throws FileNotFoundException
java.io.File
,
i.e. to a file in the file system.resourceUri
- the resource URI to resolvedescription
- a description of the original resource that
the URI was created for (for example, a class path location)FileNotFoundException
- if the URL cannot be resolved to
a file in the file systempublic static boolean isFileURL(URL url)
url
- the URL to checkpublic static boolean isJarURL(URL url)
url
- the URL to checkpublic static boolean isJarFileURL(URL url)
url
- the URL to checkpublic static URL extractJarFileURL(URL jarUrl) throws MalformedURLException
jarUrl
- the original URLMalformedURLException
- if no valid jar file URL could be extractedpublic static URL extractArchiveURL(URL jarUrl) throws MalformedURLException
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.
jarUrl
- the original URLMalformedURLException
- if no valid jar file URL could be extractedextractJarFileURL(URL)
public static URI toURI(URL url) throws URISyntaxException
url
- the URL to convert into a URI instanceURISyntaxException
- if the URL wasn't a valid URIURL.toURI()
public static URI toURI(String location) throws URISyntaxException
location
- the location String to convert into a URI instanceURISyntaxException
- if the location wasn't a valid URIpublic static void useCachesIfNecessary(URLConnection con)
"useCaches"
flag on the
given connection, preferring false
but leaving the
flag at true
for JNLP based resources.con
- the URLConnection to set the flag on