URL URI

小看了下URL和URI的API

可以从URL中读取资源

@Test 
	public void testURL() throws Exception{
		URL url = new URL("http://127.0.0.1:8080/index.html");
		System.out.println(url.getContent());
		System.out.println(url.getDefaultPort());
		System.out.println(url.getHost());
		System.out.println(url.getPath());
		System.out.println(url.getPort());
		System.out.println(url.getProtocol());
		System.out.println(url.getQuery());//获取此 URL 的查询部分	
		System.out.println(url.getRef());//获取此 URL 的锚点(也称为“引用”)。
		System.out.println(url.getUserInfo());//获取此 URL 的 userInfo 部分。
		System.out.println(url.openConnection());//返回一个 URLConnection 对象,它表示到 URL 所引用的远程对象的连接。
		System.out.println(url.toString());
		System.out.println(url.toURI());
		System.out.println(url.openConnection());//返回一个 URLConnection 对象,它表示到 URL 所引用的远程对象的连接。
		System.out.println(url.getFile());
		System.out.println(url.getAuthority());//获取此 URL 的授权部分。
		
		//InputStream inputStream = new FileInputStream(url.getFile());
		InputStream inputStream = url.openStream();
		int temp;
		while ((temp = inputStream.read())!= -1) {
			System.out.write(temp);
		}
		System.out.println("over");
	}

 

也可以把URI转换成URL

@Test
	public void testURI() throws Exception{
		URI url = new URI("http://127.0.0.1:8080/index.html");
		System.out.println(url.isAbsolute());
		System.out.println(url.isOpaque());
		URL url2 = url.toURL();	
	}

 

### Java 中 URLURI 的区别及用法 在 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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值