Java URL类用法详解(附带实例)
java.net 包中的 URL 类是对统一资源定位符(Uniform Resource Locator)的抽象,使用 URL 创建对象的应用程序称为客户端程序,一个 URL 对象存放着一个具体资源的引用,表明客户要访问这个 URL 中的资源,利用 URL 对象可以获取 URL 中的资源。
一个 URL 对象通常包含最基本的三部分信息,分别是协议、地址、资源:
URL 是指向互联网“资源”的指针。通过 URL 标识,就可以利用各种网络协议来获取远端计算机上的资源或信息,从而方便快捷地开发出 Internet 应用程序。URL 的格式如下:
在上述格式中,端口号、文件名和引用是可选的。传输协议名和主机名是必需的。当没有给出传输协议名时,浏览器默认的传输协议是 HTTP,下面都是合法的 URL:
URL 类的构造方法如下:
另外,URL 类还有以下用来操作 URL 的方法:
下面通过一个案例来演示 URL 编程方法。
【实例】使用 URL 类获取远端主机上指定文件的内容。功能实现:创建一个参数为“http://www.baidu.com/index.html”的 URL 对象,然后读取这个对象的文件。
一个 URL 对象通常包含最基本的三部分信息,分别是协议、地址、资源:
- 协议必须是 URL 对象所在的 Java 虚拟机支持的协议,常用的协议如 HTTP、FTP 等都是 Java 虚拟机支持的协议;
- 地址必须是能连接的有效 IP 地址或域名地址;
- 资源可以是主机上的任何一个文件。
URL 是指向互联网“资源”的指针。通过 URL 标识,就可以利用各种网络协议来获取远端计算机上的资源或信息,从而方便快捷地开发出 Internet 应用程序。URL 的格式如下:
传输协议名://主机名:端口号/文件名#引用
- “传输协议名”指定获取资源所使用的传输协议,如 HTTP 协议;
- “主机名”是网络中的计算机名或 IP 地址;
- “端口号”是计算机中代表一个服务的进程编号;
- “文件名”是服务器上包括路径的文件名称;
- “引用”是文件中的标记,可用于同一个文件中不同位置的跳转。
在上述格式中,端口号、文件名和引用是可选的。传输协议名和主机名是必需的。当没有给出传输协议名时,浏览器默认的传输协议是 HTTP,下面都是合法的 URL:
http://java.sun.com/index.html http://java.sun.com/index.html#chapter1 http://192.168.0.1:7001 http://192.168.0.1:7001/port/index.html#myedu
Java URL类
URL 类是 Java 语言提供的支持 URL 编程的基础类,其类路径是 java.net.URL。URL 类的构造方法如下:
- URL(String spec):该构造方法根据指定的字符串创建URL对象。如果字符串指定了未知协议,则抛出 MalformedURLException 异常;
- URL(String protocol, String host, String file):该构造方法根据指定的 protocol 名称、host 名称和 file 名称创建 URL;
- URL(String protocol, String host, int port, String file):该构造方法根据指定 protocol、host、port 号和 file 创建 URL 对象。
另外,URL 类还有以下用来操作 URL 的方法:
方法名称 | 描述 |
---|---|
Object getContent() | 获取此 UR 的内容。 |
int getDefaultPort() | 获取与此 URL 关联协议的默认端口号。 |
String getFile() | 获取此 URL 的文件名。 |
String getHost() | 获取此 URL 的主机名(如果适用)。 |
String getPath() | 获取此 URL 的路径部分。 |
int getPort() | 获取此 URL 的端口号。 |
String getProtocol() | 获取此 URL 的协议名称。 |
String getRef() | 获取此 URL 的锚点(也称为“引用”)。 |
URLConnection openConnection() | 返回一个 URLConnection 对象,表示到 URL 所引用的远程对象的连接。 |
InputStream openStream() | 打开到此 URL 的连接,并返回一个用于从该连接读入的 InputStream。 |
下面通过一个案例来演示 URL 编程方法。
【实例】使用 URL 类获取远端主机上指定文件的内容。功能实现:创建一个参数为“http://www.baidu.com/index.html”的 URL 对象,然后读取这个对象的文件。
import java.io.*; import java.net.URL; public class URLTest { public static void main(String[] args) throws Exception { // 创建 URL 对象 URL url = new URL("http://www.baidu.com/index.html"); // 创建 InputStreamReader 对象 InputStreamReader is = new InputStreamReader(url.openStream()); System.out.println("协议: " + url.getProtocol()); // 显示协议名 System.out.println("主机: " + url.getHost()); // 显示主机名 System.out.println("端口: " + url.getPort()); // 显示端口号 System.out.println("路径: " + url.getPath()); // 显示路径名 System.out.println("文件: " + url.getFile()); // 显示文件名 BufferedReader br = new BufferedReader(is); // 创建 BufferedReader 对象 String inputLine; System.out.println("文件内容: "); // 按行从缓冲输入流循环读字符,直到读完所有行 while ((inputLine = br.readLine()) != null) { System.out.println(inputLine); // 把读取的数据输出到屏幕 } br.close(); // 关闭字符输入流 } }程序运行结果为:
协议: http
主机: www.baidu.com
端口: -1
路径: /index.html
文件: /index.html
文件内容:
<!DOCTYPE html><html><head><title>百度一下,你就知道</title><!-- 其他头部信息 --></head><body><!-- 网页内容 --></body></html>