输入java URIDemo命令后列表的输出结果如下
query://:/public/manuals/appliances?stove#ge:
Authority = :
Fragment = ge
Host =
Path = /public/manuals/appliances
Port =
Query = stove
Scheme = query
//:/public/manuals/appliances?stove
User Info = jeff
URI is absolute: true
URI is opaque: false
上面的输出显示该URI是绝对的因为它指定了一个大纲(query)并且该URI是分层的因为query后面有/符号
技巧
你应该调用URI的compareTo(Object o)和equals(Object o)来决定URI的次序(为了排序目的)和等同性你可以参考SDK文档查阅这些方法的更多信息
URI类支持基本的URI操作包括标准化(normalization)分解(resolution)和相对化(relativization)标准化是通过URI的normalize()方法支持的调用normalize()时它返回对新URI对象的引用该对象包含调用的URI对象的URI的标准的表现
列表演示了normalize()方法它把URI作为程序的唯一的参数URIDemo打印出标准的相等的URI
列表: URIDemojava
// URIDemojava
import *;
class URIDemo
{
ublic static void main (String [] args) throws Exception
{
if (argslength != )
{
Systemerrprintln (usage: java URIDemo uri);
return;
}
URI uri = new URI (args []);
Systemoutprintln (Normalized URI = +
urinormalize ()toString ());
}
}
在编译URIDemo后在命令行输入java URIDemo x/y//z//q将看到下面的输出
Normalized URI = x/z/q
上面的输出显示y和消失了这是因为意味着你想直接在x下面访问名字空间的z部分意味着你希望访问与z部分相关的名字空间的q部分
URI通过提供resolve(String uri)resolve(URI uri)和relativize(URI uri)方法支持反向解析和相对化操作如果uri引用是空的(null)这三个方法都会产生NullPointerException对象同样如果指定的URI违反了RFC 语法规则resolve(String uri)通过的内部的create(String uri)调用间接地产生一个IllegalArgumentException对象
列表的代码演示了resolve(String uri)和relativize(URI uri)
列表: URIDemojava
// URIDemojava
import *;
class URIDemo
{
ublic static void main (String [] args) throws Exception
{
if (argslength != )
{
Systemerrprintln (usage: +
java URIDemo uriBase uriRelative);
return;
}
URI uriBase = new URI (args []);
Systemoutprintln (Base URI = +uriBasetoString ());
URI uriRelative = new URI (args []);
Systemoutprintln (Relative URI = +uriRelativetoString ());
URI uriResolved = uriBaseresolve (uriRelative);
Systemoutprintln (Resolved URI = +uriResolvedtoString ());
URI uriRelativized = uriBaserelativize (uriResolved);
Systemoutprintln (Relativized URI = +uriRelativizedtoString ());
}
}
在编译URIDemo后在命令行输入java URIDemo x//y 输出如下
Base URI =
Relative URI = x//y
Resolved URI =
Relativized URI = y
上面的输出显示相对的URI的x//y根据基础URI 分解并(在宫相对的URI
技巧
调用URI的toURL()方法把URI转换为URL