JAVA--URI和URL

本文深入解析了URI(统一资源标识符)与URL(统一资源定位符)的区别与联系,阐述了两者在Java中的应用,包括如何创建URL对象及通过URLConnection获取网络资源。

JAVA–URI和URL

URI:
统一资源标识符,用于标识某一个互联网资源名称的字符串,表示路径
包含:主机名,标识符,相对URI
只能看,不能操作

URL:
统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁表示,是互联网上标准资源的地址。互联网上的每
一个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
可以操作,可以读取流的数据

在JAVA中,URL和URI都表示统一资源路径;
URI表示一个统一资源的标识符,不能用于定位任何资源,唯一作用就是解析;
而URL则包含一个可以打开到达该资源的输入流,可以简单理解URL是URI的特例。

1.创建URL对象
URL(String protocol,String host,String file)
协议、主机、端口、文件地址
URL url = new URL(“http”,“localhost”,8080,"/index.jsp");
2.通过URLConnect连接网络,并获取网络资源
实例:

//通过URLConnect连接网络,并获取网络资源
public class URLConnection {

	public static void main(String[] args) throws Exception {
		//URL url = new URL("http","localhost",8081,"/tomcat.png");
		//获取网络图片连接
		URL url = new URL("http://img17.3lian.com/201612/22/4d77ec418ebbf237f81c1c81cf4d386f.jpg");		
		java.net.URLConnection connection = url.openConnection();
		//读取网络资源数据用InputStream,写入用OutputStream
		InputStream inputStream = connection.getInputStream();
		//把图片保存到本地,命名为xxx.jpg
		Files.copy(inputStream, Paths.get("xxx.jpg"));
	}

}

在这里插入图片描述
在这里插入图片描述

### JavaURL URI 的区别及用法 在 Java 编程中,`URL` `URI` 是两个用于表示网络资源地址的重要类。以下是它们之间的主要差异以及各自的用途。 #### 1. 定义上的区别 - **URI (Uniform Resource Identifier)** 表示统一资源标识符,是一个更通用的概念,用来唯一标识某个资源[^1]。它既可以指向本地文件也可以指向远程服务器上的资源。 - **URL (Uniform Resource Locator)** 则是 URI 的子集,专门用于定位互联网上具体位置的资源[^2]。换句话说,所有的 URL 都可以看作是一种特殊的 URI。 #### 2. 功能上的对比 - **URI**: 主要功能在于命名或者描述资源的位置关系而不需要一定能够访问到该资源。它可以包含相对路径、绝对路径以及其他形式的信息字符串来定义资源的身份[^3]。 - **URL**: 提供了更多关于如何实际获取这些资源的方法细节,比如协议类型(http/https),端口号等等,并且可以通过其方法直接建立连接并读取数据流[^4]。 #### 3. 使用场景举例 ##### 创建对象实例 下面展示了创建 `java.net.URI` `java.net.URL` 对象的例子: ```java // Creating a URI object import java.net.URI; public class Main { public static void main(String[] args) throws Exception{ String uriString = "http://example.com/resource"; URI myUri = new URI(uriString); System.out.println(myUri.toString()); } } // Creating a URL object from an existing URI or string literal. import java.net.URL; public class Main { public static void main(String []args)throws Exception{ URL url=new URL("http","www.example.com",80,"/index.html"); System.out.println(url.toExternalForm()); } } ``` 上述代码片段分别演示了通过不同方式构建 `URI` `URL` 实例的过程[^5]。 #### 4. 方法支持情况分析 | Method Name | Description | Supported By Both Classes | |-------------|--------------------------------------|---------------------------| | normalize() | Normalizes this URI by removing redundant segments.| Yes | | resolve(URI)| Resolves another URI against this one producing a third URI as result.|Yes | | toASCIIString()| Converts the contents into ASCII encoding suitable for transmission over networks.|Yes | 值得注意的是虽然两者都实现了部分相同的功能接口但是由于设计目的的不同所以在某些特定操作方面存在局限性[^6]. --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你这个橘子不要皮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值