public class URLUtil extends URLEncodeUtil
统一资源定位符,描述了一台特定服务器上某资源的特定位置。
URL组成:协议://主机名[:端口]/ 路径/[:参数] [?查询]#Fragment protocol :// hostname[:port] / path / [:parameters][?query]#fragment
Modifier and Type | Field and Description |
---|---|
static String |
CLASSPATH_URL_PREFIX
针对ClassPath路径的伪协议前缀(兼容Spring): "classpath:"
|
static String |
FILE_URL_PREFIX
URL 前缀表示文件: "file:"
|
static String |
JAR_URL_PREFIX
URL 前缀表示jar: "jar:"
|
static String |
JAR_URL_SEPARATOR
Jar路径以及内部文件路径的分界符: "!
|
static String |
URL_PROTOCOL_FILE
URL 协议表示文件: "file"
|
static String |
URL_PROTOCOL_JAR
URL 协议表示Jar文件: "jar"
|
static String |
URL_PROTOCOL_VFS
URL 协议表示JBoss VFS资源: "vfs"
|
static String |
URL_PROTOCOL_VFSFILE
URL 协议表示JBoss文件: "vfsfile"
|
static String |
URL_PROTOCOL_VFSZIP
URL 协议表示JBoss zip文件: "vfszip"
|
static String |
URL_PROTOCOL_WSJAR
URL 协议表示WebSphere文件: "wsjar"
|
static String |
URL_PROTOCOL_ZIP
URL 协议表示zip文件: "zip"
|
static String |
WAR_URL_PREFIX
URL 前缀表示war: "war:"
|
static String |
WAR_URL_SEPARATOR
WAR路径及内部文件路径分界符
|
Constructor and Description |
---|
URLUtil() |
Modifier and Type | Method and Description |
---|---|
static String |
buildQuery(Map<String,?> paramMap,
Charset charset)
将Map形式的Form表单数据转换为Url参数形式
paramMap中如果key为空(null和"")会被忽略,如果value为null,会被做为空白符("") 会自动url编码键和值 key1=v1&key2=&key3=v3 |
static String |
completeUrl(String baseUrl,
String relativePath)
补全相对路径
|
static String |
decode(String url)
解码URL
将%开头的16进制表示的内容解码。 |
static String |
decode(String content,
Charset charset)
解码application/x-www-form-urlencoded字符
将%开头的16进制表示的内容解码。 |
static String |
decode(String content,
Charset charset,
boolean isPlusToSpace)
解码application/x-www-form-urlencoded字符
将%开头的16进制表示的内容解码。 |
static String |
decode(String content,
String charset)
解码application/x-www-form-urlencoded字符
将%开头的16进制表示的内容解码。 |
static String |
encodeBlank(CharSequence urlStr)
单独编码URL中的空白符,空白符编码为%20
|
static long |
getContentLength(URL url)
获取指定URL对应资源的内容长度,对于Http,其长度使用Content-Length头决定。
|
static String |
getDataUri(String mimeType,
Charset charset,
String encoding,
String data)
Data URI Scheme封装。
|
static String |
getDataUri(String mimeType,
String encoding,
String data)
Data URI Scheme封装。
|
static String |
getDataUriBase64(String mimeType,
String data)
Data URI Scheme封装,数据格式为Base64。
|
static String |
getDecodedPath(URL url)
从URL对象中获取不被编码的路径Path
对于本地路径,URL对象的getPath方法对于包含中文或空格时会被编码,导致本读路径读取错误。 |
static URI |
getHost(URL url)
获取URL中域名部分,只保留URL中的协议(Protocol)、Host,其它为null。
|
static JarFile |
getJarFile(URL url)
从URL中获取JarFile
|
static String |
getPath(String uriStr)
获得path部分
|
static BufferedReader |
getReader(URL url,
Charset charset)
获得Reader
|
static InputStream |
getStream(URL url)
从URL中获取流
|
static URI |
getStringURI(CharSequence content)
获取string协议的URL,类似于string:///xxxxx
|
static URL |
getURL(File file)
获得URL,常用于使用绝对路径时的情况
|
static URL |
getURL(String pathBaseClassLoader)
获得URL
|
static URL |
getURL(String path,
Class<?> clazz)
获得URL
|
static URL[] |
getURLs(File... files)
获得URL,常用于使用绝对路径时的情况
|
static boolean |
isFileURL(URL url)
提供的URL是否为文件
文件协议包括"file", "vfsfile" 或 "vfs". |
static boolean |
isJarFileURL(URL url)
提供的URL是否为Jar文件URL 判断依据为file协议且扩展名为.jar
|
static boolean |
isJarURL(URL url)
提供的URL是否为jar包URL 协议包括: "jar", "zip", "vfszip" 或 "wsjar".
|
static String |
normalize(String url)
标准化URL字符串,包括:
自动补齐“http://”头
去除开头的\或者/
替换\为/
|
static String |
normalize(String url,
boolean isEncodePath)
标准化URL字符串,包括:
自动补齐“http://”头
去除开头的\或者/
替换\为/
|
static String |
normalize(String url,
boolean isEncodePath,
boolean replaceSlash)
标准化URL字符串,包括:
自动补齐“http://”头
去除开头的\或者/
替换\为/
如果replaceSlash为true,则替换多个/为一个
|
static long |
size(URL url)
获取URL对应数据长度
如果URL为文件,转换为文件获取文件长度。
|
static URI |
toURI(String location)
转字符串为URI
|
static URI |
toURI(String location,
boolean isEncode)
转字符串为URI
|
static URI |
toURI(URL url)
转URL为URI
|
static URI |
toURI(URL url,
boolean isEncode)
转URL为URI
|
static URL |
toUrlForHttp(String urlStr)
将URL字符串转换为URL对象,并做必要验证
|
static URL |
toUrlForHttp(String urlStr,
URLStreamHandler handler)
将URL字符串转换为URL对象,并做必要验证
|
static URL |
url(String url)
通过一个字符串形式的URL地址创建URL对象
|
static URL |
url(String url,
URLStreamHandler handler)
通过一个字符串形式的URL地址创建URL对象
|
static URL |
url(URI uri)
|
static void |
useCachesIfNecessary(URLConnection con)
如果连接为JNLP方式,则打开缓存
|
encode, encode, encodeAll, encodeAll, encodeFragment, encodeFragment, encodePathSegment, encodePathSegment, encodeQuery, encodeQuery
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_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_URL_SEPARATOR
public static final String WAR_URL_SEPARATOR
public static URL url(URI uri) throws UtilException
uri
- URI
UtilException
- MalformedURLException
包装,URI格式有问题时抛出URI.toURL()
public static URL url(String url, URLStreamHandler handler)
url
- URLhandler
- URLStreamHandler
public static URI getStringURI(CharSequence content)
content
- 正文public static URL toUrlForHttp(String urlStr)
urlStr
- URL字符串public static URL toUrlForHttp(String urlStr, URLStreamHandler handler)
urlStr
- URL字符串handler
- URLStreamHandler
public static String encodeBlank(CharSequence urlStr)
urlStr
- URL字符串public static URL getURL(String pathBaseClassLoader)
pathBaseClassLoader
- 相对路径(相对于classes)ResourceUtil.getResource(String)
public static URL getURL(String path, Class<?> clazz)
path
- 相对给定 class所在的路径clazz
- 指定classResourceUtil.getResource(String, Class)
public static URL getURL(File file)
file
- URL对应的文件对象UtilException
- MalformedURLExceptionpublic static URL[] getURLs(File... files)
files
- URL对应的文件对象UtilException
- MalformedURLExceptionpublic static URI getHost(URL url)
url
- URLpublic static String completeUrl(String baseUrl, String relativePath)
baseUrl
- 基准URLrelativePath
- 相对URLUtilException
- MalformedURLExceptionpublic static String decode(String url) throws UtilException
url
- URLUtilException
- UnsupportedEncodingExceptionpublic static String decode(String content, Charset charset)
content
- 被解码内容charset
- 编码,null表示不解码public static String decode(String content, Charset charset, boolean isPlusToSpace)
content
- 被解码内容charset
- 编码,null表示不解码isPlusToSpace
- 是否+转换为空格public static String decode(String content, String charset) throws UtilException
content
- URLcharset
- 编码UtilException
- UnsupportedEncodingExceptionpublic static String getPath(String uriStr)
uriStr
- URI路径UtilException
- 包装URISyntaxExceptionpublic static String getDecodedPath(URL url)
url
- URL
public static URI toURI(URL url) throws UtilException
url
- URLUtilException
- 包装URISyntaxExceptionpublic static URI toURI(URL url, boolean isEncode) throws UtilException
url
- URLisEncode
- 是否编码参数中的特殊字符(默认UTF-8编码)UtilException
- 包装URISyntaxExceptionpublic static URI toURI(String location) throws UtilException
location
- 字符串路径UtilException
- 包装URISyntaxExceptionpublic static URI toURI(String location, boolean isEncode) throws UtilException
location
- 字符串路径isEncode
- 是否编码参数中的特殊字符(默认UTF-8编码)UtilException
- 包装URISyntaxExceptionpublic static boolean isFileURL(URL url)
url
- URL
public static boolean isJarURL(URL url)
url
- URL
public static boolean isJarFileURL(URL url)
url
- the URL to checkpublic static InputStream getStream(URL url)
url
- URL
public static BufferedReader getReader(URL url, Charset charset)
url
- URL
charset
- 编码BufferedReader
public static JarFile getJarFile(URL url)
url
- URLpublic static String normalize(String url)
url
- URL字符串public static String normalize(String url, boolean isEncodePath)
url
- URL字符串isEncodePath
- 是否对URL中path部分的中文和特殊字符做转义(不包括 http:, /和域名部分)public static String normalize(String url, boolean isEncodePath, boolean replaceSlash)
url
- URL字符串isEncodePath
- 是否对URL中path部分的中文和特殊字符做转义(不包括 http:, /和域名部分)replaceSlash
- 是否替换url body中的 //public static String buildQuery(Map<String,?> paramMap, Charset charset)
key1=v1&key2=&key3=v3
paramMap
- 表单数据charset
- 编码,编码为null表示不编码public static long getContentLength(URL url) throws IORuntimeException
url
- URLIORuntimeException
- IO异常public static String getDataUriBase64(String mimeType, String data)
Data URI的格式规范:
data:[<mime type>][;charset=<charset>][;<encoding>],<encoded data>
mimeType
- 可选项(null表示无),数据类型(image/png、text/plain等)data
- 编码后的数据public static String getDataUri(String mimeType, String encoding, String data)
Data URI的格式规范:
data:[<mime type>][;charset=<charset>][;<encoding>],<encoded data>
mimeType
- 可选项(null表示无),数据类型(image/png、text/plain等)encoding
- 数据编码方式(US-ASCII,BASE64等)data
- 编码后的数据public static String getDataUri(String mimeType, Charset charset, String encoding, String data)
Data URI的格式规范:
data:[<mime type>][;charset=<charset>][;<encoding>],<encoded data>
mimeType
- 可选项(null表示无),数据类型(image/png、text/plain等)charset
- 可选项(null表示无),源文本的字符集编码方式encoding
- 数据编码方式(US-ASCII,BASE64等)data
- 编码后的数据public static long size(URL url)
URLConnection.getContentLengthLong()
url
- URLpublic static void useCachesIfNecessary(URLConnection con)
con
- URLConnection
Copyright © 2024. All rights reserved.