# Class UriUtil

java.lang.Object
org.apache.tomcat.util.buf.UriUtil

public final class UriUtil extends Object
Utility class for working with URIs and URLs.

## Method Summary

Modifier and Type
Method
Description
`static URL`
`buildJarSafeUrl(File file)`
`static URL`
`buildJarUrl(File jarFile)`
`static URL`
`buildJarUrl(File jarFile, String entryPath)`
`static URL`
`buildJarUrl(String fileUrlString)`
`static URL`
`buildJarUrl(String fileUrlString, String entryPath)`
`static String`
`getWarSeparator()`
`static boolean`
`hasScheme(CharSequence uri)`
Determine if a URI string has a `scheme` component.
`static boolean`
`isAbsoluteURI(String path)`
Does the provided path start with `file:/` or `<protocol>://`.
`static URI`
`resolve(URI base, String target)`
Replicates the behaviour of `URI.resolve(String)` and adds support for URIs of the form `jar:file:/...` .
`static URL`
`warToJar(URL warUrl)`
Convert a URL of the form `war:file:...` to `jar:file:...`.

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

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

## Method Details

### hasScheme

public static boolean hasScheme(CharSequence uri)
Determine if a URI string has a `scheme` component.

Parameters:
  `uri` - The URI to test
Returns:
  `true` if a scheme is present, otherwise {code @false}

### buildJarUrl

public static URL buildJarUrl(File jarFile) throws IOException

Throws:
  `IOException`

### buildJarUrl

public static URL buildJarUrl(File jarFile, String entryPath) throws IOException

Throws:
  `IOException`

### buildJarUrl

public static URL buildJarUrl(String fileUrlString) throws IOException

Throws:
  `IOException`

### buildJarUrl

public static URL buildJarUrl(String fileUrlString, String entryPath) throws IOException

Throws:
  `IOException`

### buildJarSafeUrl

public static URL buildJarSafeUrl(File file) throws IOException

Throws:
  `IOException`

### warToJar

public static URL warToJar(URL warUrl) throws IOException
Convert a URL of the form `war:file:...` to `jar:file:...`.

Parameters:
  `warUrl` - The WAR URL to convert
Returns:
  The equivalent JAR URL
Throws:
  `IOException` - If the conversion fails

### getWarSeparator

public static String getWarSeparator()

### isAbsoluteURI

public static boolean isAbsoluteURI(String path)
Does the provided path start with `file:/` or `<protocol>://`.

Parameters:
  `path` - The path to test
Returns:
  `true` if the supplied path starts with once of the recognised sequences.

### resolve

public static URI resolve(URI base, String target) throws MalformedURLException, URISyntaxException
Replicates the behaviour of `URI.resolve(String)` and adds support for URIs of the form `jar:file:/...` .

Parameters:
  `base` - The base URI to resolve against
  `target` - The path to resolve
Returns:
  The resulting URI as per `URI.resolve(String)`
Throws:
  `MalformedURLException` - If the base URI cannot be converted to a URL
  `URISyntaxException` - If the resulting URL cannot be converted to a URI