你的位置:首页 > Java教程

[Java教程]网络编程——URL编程


URL:是统一资源定位器的简称,它表示Internet某一资源的地址。通过URL我们可以访问Internet上的各种网络资源,比如最常见的www,ftp站点。浏览器通过解析给定的URL可以在网络上查找相应的文件或其他资源。

 

组成:URL的基本结构由5部分组成。

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

http://www.tomcat.com:80/Gamelan/network.htm#BOTTOM

协议名://机器名+端口号+文件名+内部引用

 

为了表示URL,java.net包中实现了类URL。

构造方法

① URL(String url)

//url代表一个绝对地址,URL对象直接指向这个资源,如:

URL url=new URL(http://www.baidu.com);

② URL(URL baseURL,String relativeURL)

//其中,baseURL代表绝对地址,relativeURL代表相对地址,如:

URL url=new URL(http://www.baidu.com);

URL lib=new URL(url,”library/library.htm”);

③ URL(String protocol,String host,String file)

//其中,protocol代表通信协议,host代表主机名,file代表文件名,如:

new URL(“http”,www.baidu.com,”/test/test.htm”);

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

URL lib = new URL(“http”,www.baidu.com,80,”/test/test.htm”);

 

获取URL对象的属性

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

② getHost():返回主机名。

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

④ getPort():返回端口号。

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

⑥ getRef():返回URL中的HTML文档标记,即#号标记。

⑦ getUserInfo():返回用户信息。

 

URL有两种方法可以用来访问Interent上资源。

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

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

 

 示例:下载url文件到指定目录

下载方法:

 1 class DownLoadUtil { 2   public static void download(String urlString, String fileName, 3       String savePath) throws IOException { 4     URL url = new URL(urlString); 5     //方法一 6     // URLConnection conn = url.openConnection(); 7     // InputStream is = conn.getInputStream(); 8      9     //方法二10     InputStream is = url.openStream();11     12     byte[] buff = new byte[1024];13     int len = 0;14     File file = new File(savePath);15     if (!file.exists()) {16       file.mkdirs();17     }18     OutputStream os = new FileOutputStream(file.getAbsolutePath() + "\\"19         + fileName);20     while ((len = is.read(buff)) != -1) {21       os.write(buff, 0, len);22     }23     // 释放资源24     os.close();25     is.close();26   }27 }

主方法:

1     try {2       DownLoadUtil3           .download(4               "http://images.sohu.com/saf/a2016/0511/wKiDRFcy-16AHkkXAABH52NJX18606.jpg",5               "my.jpg", "d:/ceshi");6     } catch (IOException e) {7       e.printStackTrace();8     }