📜  Java中的 URL toURI() 方法及示例(1)

📅  最后修改于: 2023-12-03 15:01:57.901000             🧑  作者: Mango

Java中的 URL toURI() 方法及示例

简介

URL类表示一个URL地址。当需要在URL和URI之间进行转换时,可以使用URL类提供的**toURI()**方法将URL转换为URI对象。

URI类表示一个统一资源标识符(Uniform Resource Identifier)。URI是一个标准的国际化命名空间,比如http和mailto这样的URI方案可以被应用于万维网上的各种资源,而urn的URI方案则可以被应用于打印介质等非网络资源。

因此,Java中的URL类和URI类是常常被用于处理与网络相关的数据和访问网络资源的类之一。

方法使用

URL类提供了一个toURI()方法,用于将URL实例转换为URI实例。toURI()方法调用使用了URL类的构造函数。如果URL句法不正确,则会抛出一个MalformedURLException异常。

一个基本的使用示例,如下所示:

try {
    URL url = new URL("http://www.example.com/test.html");
    URI uri = url.toURI();
    System.out.println(uri);
} catch (MalformedURLException | URISyntaxException e) {
    e.printStackTrace();
}

在上面的代码中,我们创建了一个URL实例,然后使用toURI()方法将其转换为URI实例,并将其打印到控制台。如果URL的语法是不正确的,将抛出一个MalformedURLException(编译时异常)异常。而如果转换操作失败(如URI的格式错误等),将抛出一个URISyntaxException(运行时异常)异常。

示例

下面是一个更完整的示例,它演示了如何使用URL和URI类来访问网络资源:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URI;
import java.net.URISyntaxException;

public class UrlToUriExample {
    
    public static void main(String[] args) {
        try {
            URL url = new URL("https://jsonplaceholder.typicode.com/todos/1");
            URI uri = url.toURI();
            System.out.println("uri=" + uri);
            System.out.println();
            BufferedReader reader = new BufferedReader(
                new InputStreamReader(url.openStream()));

            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            reader.close();
        } catch (MalformedURLException | URISyntaxException | IOException e) {
            e.printStackTrace();
        }
    }
}

上面的代码演示了如何使用URL和URI访问一个RESTful API服务,并打印从服务返回的JSON数据。如果URL对象无法解析,则会抛出一个MalformedURLException异常;如果URI实例无法解析为URI,则会抛出一个URISyntaxException异常;如果在打开一个URL资源的过程中发生错误,则会抛出一个IOException异常。

结论

URL类和URI类是Java中经常使用的类之一。URL类用于表示一个URL地址,而URI类用于表示一个统一资源标识符。URL类可以使用toURI()方法将其转换为URI实例,以允许在这两个类之间进行转换。在使用这些类时,请确保捕获必要的异常,并使用try-catch语句确保程序在出现异常的情况下也能正常执行。