java.lang.Object | +----java.net.URL
URL 类表示一个标准的资源定位器,一个指向 WWW “资源”的指针。 一个资源有时可能象一个文件或目录一样简单,也可能是一个更为复杂的对象的引用,例如一个数据库的查询或一个搜索引擎 。
有关 URL 的类型和它们的格式的进一步信息,可以查阅:
http://www.ncsa.uiuc.edu/demoweb/url-primer.html
一个 URL 一般可以分为几个部分。上一个
URL 例子指明使用的协议是 http (HyperText Transport
Protocol,超文本传输协议) 以及信息驻留在名为
www.ncsa.uiuc.edu 的主机上。主机上的信息被命名为
demoweb/url-primer.html 。 主机上的名称的确切含义依赖于协议和主机 。
信息通常存储在文件里,但它也可以在传输过程中生成。 URL 的这个部件称为 file 构件,即使该信息无须存在于一个文件里。
一个 URL 可以有选择的地指定一个“端口",它就是
TCP 连接所用的远程主机的端口号。
如果不指定端口,将使用该协议的缺省值。
例如,http 的缺省端口为 80 。 一替代的端口可以指定为:
http://www.ncsa.uiuc.edu:8080/demoweb/url-primer.html
URL 可能在尾部附加一个“热点”(anchor),或记为 “ref” 或 “reference”。 热点由加亮的“#”号后紧跟字符来指示。 例如,
http://java.sun.com/index.html#chapter1
热点从技术上讲并不是 URL 的一部分。 但是它表示获得指定的资源后,应用程序对文档的标签为chapter1 的部分感兴趣。标签的涵义特定于不同资源。
应用程序也可以指定“相对 URL”,它仅包含另一相对 URL 资源的充分信息。 相对 URL 经常被 HTML 页面使用。 例如, URL 的内容为:
http://java.sun.com/index.html
FAQ.html
http://java.sun.com/FAQ.html
相对 URL 不需要指定 URL 的所有组成部分。 如果没有协议、主机名、或者端口号码,那么它们的取值将从全路径的指定 URL 继承。 但必须指定文件部分。可选的热点不能继承。
String 生成一个 URL 对象 。
protocol, host, port 号码,
和 file 生成一个 URL 对象。
protocol 名,host 名,和 file 名生成一个绝对的 URL 。spec 而生成一个 URL 。
URL 的文件名。
URL 的主机名。URL 的端口号。
URL 的协议名。
URL 的热点部分(也称为”reference“) 。
URLConnection 对象,该对象代表由 URL
指定的到远程对象的连接。
URL 的连接,并返回用于从该连接读取数据的
InputStream。URLStreamHandlerFactory 。
URL 的字符串表示。
URL 的字符串表示。
public URL(String protocol,
String host,
int port,
String file) throws MalformedURLException
protocol, host, port 号码,
和 file 生成一个 URL 对象。 port
指定为 -1 表示 URL 应该使用该协议的缺省端口。
如果它是根据指定协议生成的第一个 URL 对象,
则为该协议生成一个 stream protocol handler 对象和一个
URLStreamHandler 类实例。
URLStreamHandlerFactory 的实例作为流处理程序工厂,则使用表示该协议的字符串作为参数调用实例方法
createURLStreamHandler创建流协议处理程序。
URLStreamHandlerFactory ,或者该工厂的 createURLStreamHandler 方法返回 null,则构造器查找系统属性值:
java.handler.protol.pkgs
null,则它被解释为由符号 '|' 分割开的程序包列表 。 构造器试图加载如下名称的类:
<package>.<protocol>.Handler
URLStreamHandler 类的子类 ,则列表中的下一个包将被尝试 。
sun.net.www.protocol.<protocol>.Handler
URLStreamHandler 的子类,则抛出一 MalformedURLException。
public URL(String protocol,
String host,
String file) throws MalformedURLException
protocol 名,host 名,和 file 名生成一个绝对 URL 。 使用该协议的缺省端口 。
该方法等价于调用四个参数分别为 protocol,
host, -1, 和 file 的构造器。
public URL(String spec) throws MalformedURLException
String 生成一个 URL 对象。
该构造器等价于调用含有两个参数且第一个参数为 null 的构造器。
String 。
public URL(URL context,
String spec) throws MalformedURLException
spec而生成一个 URL 。 如果参数 context
不是 null 并且参数 spec 是一 URL 的部分规范,则任何缺失部件的字符串都从参数 context 继承。
分析参数 String 给出的规范来确定它是否指定了一个协议。
如果 String 在第一个 ASCII 字符 '/' 出现之前包含一个 ASCII 字符 ':',则在冒号之前出现的字符构成该协议。
spec 不指定一个协议。null , 则从上下文参数中拷贝该协议。 null ,则抛出MalformedURLException 。 spec 指定一个协议。
null;或者指定了一个与规范参数不同的的协议,则上下文参数被忽略。 null 并且用规范指定了同一协议,则从上下文参数把 host,port 和 file
拷贝进新生成的 URL 。
构造器将寻找合适的流协议处理器,其类型为 URLStreamHandler,如下所示:
java.net.URL#URL(java.lang.String, java.lang.String, int,
java.lang.String)
parseURL 方法来分析规范中剩余的域,该规范覆盖了由上下文参数指定的缺省设置。
String 表示 。
protected void set(String protocol,
String host,
int port,
String file,
String ref)
public int getPort()
URL 的端口号。
若端口没有设置,则返回 -1。
public String getProtocol()
URL 的协议名。
URL 的协议。
public String getHost()
URL 的主机名。
对于 “file”协议,这是一个空串。
URL 的主机名。
public String getFile()
URL 的文件名。
URL 的文件名。
public String getRef()
URL 的热点(也称为 “reference”)。
URL 的热点(也称为“reference”)。
public boolean equals(Object obj)
null 且与该对象描述同一 URL对象时,结果为
true。如果两个 URL 有相同的协议,引用相同的主机,在主机上使用相同的端口号码和主机上相同文件,则它们相等。
不比较URL 对象的热点。 该方法等价于:
(obj instanceof URL) && sameFile((URL)obj)
true,否则为 false。
public int hashCode()
URL 的散列码。
public boolean sameFile(URL other)
true 如果 URL 和参数 other 参考相同的资源 。 这两个URL 可能包含的 anchor 不相同。
true ;否则为 false 。 public String toString()
URL 的字符串表示。 通过调用该对象的流协议处理程序的 toExternalForm 方法来生成该字符串。
public String toExternalForm()
URL 的字符串表示。 通过调用该对象的流协议处理程序的 toExternalForm 方法来生成该字符串。
public URLConnection openConnection() throws IOException
URLConnection 对象,该对象表示到由
URL 指定的远程对象的连接。
如果不存在打开的连接,则为该 URL 调用协议处理程序的
openConnection方法打开该连接。
URLConnection。 public final InputStream openStream() throws IOException
URL 的连接,并返回用于从该连接读取数据的 InputStream 。 该方法是如下方法的简写:
openConnection().getInputStream()
public final Object getContent() throws IOException
openConnection().getContent()
public static synchronized void setURLStreamHandlerFactory(URLStreamHandlerFactory fac)
URLStreamHandlerFactory。
该方法最多只能被应用程序调用一次。
该 URLStreamHandlerFactory 实例用来构造来自协议名称的流协议处理程序。
![]()