EchoDemo's Blogs

Java中URL类的使用

1、URL概念

URL(Uniform Resource Locator)统一资源定位符,它表示Internet上某一资源的地址。通过URL我们可以访问Internet上的各种网络资源,浏览器通过解析给定的URL可以在网络上查找相应的文件或其他资源。它由五个部分组成:

<传输协议>://<主机名>:<端口号>/<文件名>#<引用>

2、URL编程

(1)为了表示URL,java.net包中实现了类URL。我们可以通过下面的构造方法来初始化一个URL对象:

URL(String url);//URL代表了一个绝对地址,URL对象直接指向这个资源。

URL(URL baseURL,String relativeURL);//其中baseURL代表绝对地址,realtiveURL代表相对地址。

URL(String protocol,String host,String file);//protocol代表通信协议,host代表主机名,file代表文件名。

URL(String protocol,String host,int port,String file);

(2)获取URL对象的属性:

getFile();//获得URL指定资源的完整文件名。

getHost();//返回主机名。

getPath();//返回指定资源的文件目录和文件名。

getPort();//返回端口号。

getProtocol();//返回表示URL中协议的字符串对象。

getRef();//返回URL的HTML文档标记,即#号标记。

getUserInfo();//返回用户信息。

(3)URL有两种方法可以用来访问Internet上的资源:

1)使用URL的openConnection()方法创建一个URLConnection类对象。再通过URLConnection对象获取相应的输入流和输出流。

2)利用URL类的openStream()方法。openStream()方法与指定的URL建立连接并返回InputStream类的对象。

3、举例说明

package com.iotek.url;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;

public class URLDemo {

    public static void main(String[] args) throws IOException {
        DownloadUtil.download("https://www.baidu.com/img/bd_logo1.png?where=super", "baidu.jpg", "f:\\test");
        System.out.println("下载结束!");
    }
}

class DownloadUtil{
    public static void download(String urlString,String fileName,String savePath) throws IOException{
        URL url = new URL(urlString);
        /*URLConnection conn = url.openConnection();
        InputStream inputStream = conn.getInputStream();*/
        InputStream inputStream = url.openStream();
        byte[] buff = new byte[1024*1024];
        int len = 0;
        File file = new File(savePath);
        if(!file.exists()){
            file.mkdirs();
        }
        OutputStream outputStream = new FileOutputStream(file.getAbsolutePath()+"\\"+fileName);
        while((len = inputStream.read(buff))!=-1){
            outputStream.write(buff, 0, len);
        }
        inputStream.close();
        outputStream.close();
    }
}
🐶 您的支持将鼓励我继续创作 🐶
-------------本文结束感谢您的阅读-------------