关于JAVA中URI和URL的区别的理解
2017-06-21 17:42
423 查看
以下大部分来自JDK1.6的官方文档和源码,记述的是本人对于这两个类的理解。
根据JDK1.6的官方描述:
URI: 表示一个统一资源标识符 (URI) 引用。英文全称是UniformResource Identifiers。
一些URI的例子:
mailto:java-net@java.sun.com
news:comp.lang.java
urn:isbn:096139210x
http://java.sun.com/j2se/1.3/
docs/guide/collections/designfaq.html#28
../../../demo/jfc/SwingSet2/src/SwingSet2.java
file:///~/calendar
URL:代表一个统一资源定位符,它是指向一个互联网“资源”的指针。互联网是关键,URL指向的资源都是网络资源,所以它需要指定一个具体的协议。
一些URL的例子:
http://java.sun.com/index.html#chapter1 http://www.socs.uts.edu.au:80/MosaicDocs-old/url-primer.html ftp://www.xx.com/1.txt
首先从标准的角度看,URL是URI的一个子集。
其次从编程角度看:
URI提供一个toURL()方法将URI转化成一个URL,如果转换不成功会抛出MalformedURLException或者在执行过程中可能会抛出:IllegalArgumentException
URI实现了Serializable和Comparable接口,由此看来URI是可以被序列化的,并且需要提供Comparable接口的compareTo方法。
一个URI有九个组成部分
需要注意的是,上面的九个成员变量都是transient类型,意味着,序列化的时候,这些值是不会被序列化的。整个对象中唯一可以被序列化的就是
private volatile String string;
这个string是根据上面的成员按照URI的规则生成的一个字符串。
创建一个URI除了使用构造函数,还可以使用URI提供的静态方法
URI.create(String s);它可以根据给定的字符串,按照URI的规则进行解析从而得到一个URI实例。
URL在URI的基础之上,又增加了一些字段。
URI类在某些特定的情况下,会对其组成的字段执行转义。建议使用URI管理URL的编码和解码,并使用URI.toURL()和URL.toURI()进行转换。
URL可以通过OpenConnection()获得一个URLConnection对象,而URLConnection可以通过connection()等方法对网络资源进行操作。
所以,如果按照官方给出的提示,我们按照以下的方式读取一个网络资源:
根据JDK1.6的官方描述:
URI: 表示一个统一资源标识符 (URI) 引用。英文全称是UniformResource Identifiers。
一些URI的例子:
mailto:java-net@java.sun.com
news:comp.lang.java
urn:isbn:096139210x
http://java.sun.com/j2se/1.3/
docs/guide/collections/designfaq.html#28
../../../demo/jfc/SwingSet2/src/SwingSet2.java
file:///~/calendar
URL:代表一个统一资源定位符,它是指向一个互联网“资源”的指针。互联网是关键,URL指向的资源都是网络资源,所以它需要指定一个具体的协议。
一些URL的例子:
http://java.sun.com/index.html#chapter1 http://www.socs.uts.edu.au:80/MosaicDocs-old/url-primer.html ftp://www.xx.com/1.txt
首先从标准的角度看,URL是URI的一个子集。
其次从编程角度看:
URI提供一个toURL()方法将URI转化成一个URL,如果转换不成功会抛出MalformedURLException或者在执行过程中可能会抛出:IllegalArgumentException
URI实现了Serializable和Comparable接口,由此看来URI是可以被序列化的,并且需要提供Comparable接口的compareTo方法。
一个URI有九个组成部分
参数名称 | 中文意思 | 类型 |
scheme | 方案 | String |
fragment | 片段 | String |
authority | 授权 | String |
userInfo | 用户信息 | String |
host | 主机 | String |
port | 端口 | Int |
path | 路径 | String |
query | 查询 | String |
schemeSpecificPart | 特定于方案的部分 | String |
private volatile String string;
这个string是根据上面的成员按照URI的规则生成的一个字符串。
创建一个URI除了使用构造函数,还可以使用URI提供的静态方法
URI.create(String s);它可以根据给定的字符串,按照URI的规则进行解析从而得到一个URI实例。
URL在URI的基础之上,又增加了一些字段。
URI类在某些特定的情况下,会对其组成的字段执行转义。建议使用URI管理URL的编码和解码,并使用URI.toURL()和URL.toURI()进行转换。
URL可以通过OpenConnection()获得一个URLConnection对象,而URLConnection可以通过connection()等方法对网络资源进行操作。
所以,如果按照官方给出的提示,我们按照以下的方式读取一个网络资源:
public static void main(String[] args){ URI uri = URI.create("http://www.baidu.com") ; URLConnection urlConnection = null; try { urlConnection = uri.toURL().openConnection(); } catch (IOException e) { e.printStackTrace(); } try { InputStream inputStream =urlConnection.getInputStream() ; InputStreamReader isr = new InputStreamReader(inputStream) ; char[] c = new char[1024] ; while (isr.read(c)!=-1){ System.out.print(c) ; } } catch (IOException e) { e.printStackTrace(); } }
相关文章推荐
- 关于URI、URL、URN区别和JAVA中对应类
- Java中路径的获取总结以及URL和URI的区别
- 爬虫技术 -- 基础学习(三)理解URL和URI的联系与区别
- [java]URI/URL/URN的区别
- Uri,Url,Urn,src,href的解释和区别,个人查资料理解,不严谨,只供参考
- 关于Url和Uri的区别
- 关于UrlEncode 一团乱麻的问题,后续彻底理解。Java中的 URLEncoder 与 URLDecoder无bug
- Java中的url与uri的区别
- URI、URL、URN的原理、区别及JAVA的实现
- JAVA中URI/URL/URN的区别
- 关于URL和URI的最简单理解
- JAVA基础(5) -- URL和URI的区别
- java关于静态与实例的区别和联系以及对象的理解。
- URI、URL、URN区别和JAVA中对应类
- 自己理解的URL和URI的区别
- Java中路径的获取总结以及URL和URI的区别_Java大本营_职场_西祠胡同 http://www.xici.net/d174934654.htm
- 关于url与uri的区别
- Java中路径的获取总结以及URL和URI的区别
- 关于初学者如何理解面向对象和面向过程的区别以及java中的类和对象
- URI、URL、URN的原理、区别及JAVA的实现