url统一资源管理器

URL类的使用
1、在java.net包中定义了URL类,该类用来处理有关URL的内容。
2、URL(Uniform Resource Locator) 统一资源定位器是指互联网“资源”的名称。资源可以是简单的文件或目录,也可以是更为复杂的对象引用,例如对数据或搜索引擎的查询。通常3、URL可以由协议名、主机、端口和资源组成。
4、URL的格式为:“protocol://host:port/resourceName”。例如,URL地址“http://www.163.index.htm”。
5、URL类提供了多个构造方法创建URL对象,常用的有两个:
1)public URL(String str)使用指定的字符串构建。
2)Public URL(URL context,String str)使用基地址和相对URL创建。
例如:可以通过绝对地址创建对象
URL url=new URL(”http://www.baidu.com”);
创建相对的URL对象。相对URL一般用在html文件中,是基于绝对URL的。例如:主URL是 http://www.baidu.com/,其下还有URL---http://www.baidu.com/a.html,以及 http://www.baidu.com/b.html,则可以创建如下的URL对象。
URL url=new URL(“http://www.baidu.com”);
URL url=new URL(url“a.html”);
URL url=new URL(url“b.html”);
还有:
3)URL(String protocol, String host, int port, String file):使用指定的协议、主机名、端口号、文件名创建。
4)URL(String protocol, String host, String file):使用指定的协议、主机名、文件名创建。
6、获得URL对象之后,就可以调用如下方法来访问该URL对应的资源。
1)String getFile():获取此URL的资源名
2)String getHost():获取此URL的主机名
3)String getPath():获取此URL的路径部分
4)String getPort():获取此URL的端口号
5)String getProtocol():获取此URL的协议名称
6)String getQuery():获取此URL的查询字符串部分
7)URLConnection openConnection():返回一个URLConnection对象,它表示到URL所引用的远程对象的连接。
8)InputSream openStream():打开与URL的连接,返回用于读取URL资源的InputStream。
9)String getAuthority():获得此URL的授权部分。
10)Object getContent():获得此URL的内容。
11)int getDefaultPort():获得与此URL关联协议的默认端口号。
12)String getRef():获得此URL的锚点(也称为"引用")。
13)String getUserInfo():获得此URL的userInfo部分。
14)boolean sameFile(URL other):比较两个URL,不包括片段部分。
15)protected void set(String protocol, String host, int port, String file, String ref):设置URL的字段。
16)static void setURLStreamHandlerFactory(URLStreamHandlerFactory fac):设置应用程序的URLStreamHandlerFactory。
7、package com.hbsi.tcp;
import java.net.*;
import java.io.*;
public class UrlDemo1 {
 /**
  * @param args
  */
 public static void main(String[] args) throws Exception {
  // TODO Auto-generated method stub
  URL aURL=new URL(" http://java.sun.con:80/docs/books/tutorial"+"index.html?name=networking#DOENLOADING");
  System.out.println("protocol="+aURL.getProtocol());
  System.out.println("authority="+aURL.getAuthority());
  System.out.println("host="+aURL.getHost());
  System.out.println("port="+aURL.getPort());
  System.out.println("path="+aURL.getPath());
  System.out.println("query="+aURL.getQuery());
  System.out.println("filename="+aURL.getFile());
  System.out.println("ref="+aURL.getRef());
 }
}
结果:
protocol=http
authority=java.sun.con:80
host=java.sun.con
port=80
path=/docs/books/tutorialindex.html
query=name=networking
filename=/docs/books/tutorialindex.html?name=networking
ref=DOENLOADING
8、实例:通过URL来下载网页信息
package com.hbsr.net;
import java.net.*;
import java.io.*;
public class TextNet {
 /**
  * @param args
  */
 public static void main(String[] args) throws Exception {
  // TODO Auto-generated method stub
  URL url=new URL(" http://www.baidu.com");
  InputStream in=url.openStream();
  BufferedReader brin=new BufferedReader(new InputStreamReader(in));
  FileOutputStream fos=new FileOutputStream("F:\\putdown.html");
  String line=null;
  while((line=brin.readLine())!=null){
   fos.write(line.getBytes());
   System.out.println(line);
  }
  brin.close();
  fos.close();
 }
}
9、URLDecoder类和URLEncoder类。
1)URLDecoder类和URLEncoder类用于完成普通字符串和application/x-www-form-urlencoded MIME字符串之间的相互转换。
2)当URL地址中包含有非西欧字符的字符串是,系统就会将这些非西欧字符串转换成特殊字符串,编程过程中可能会涉及将普通字符串和这种特殊字符串进行转换,此时就需要使用URLDecoder类和URLEncoder类。
3)URLDecoder类包含一个decode(String s ,String enc)静态方法,它可以将看上去是乱码的特殊字符串转换成普通字符串。
4)URLEncoder类包含一个encode(String s,String enc)静态方法,他可以将普通字符串转换成application/x-www-form-urlencoded MIME字符串。
5)实例说明:
package com.hbsi.tcp;
import java.io.*;
import java.net.*;
public class UrlDemo2 {
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  //将application/x-www-rorm-urlencoded字符串解码
  try {
   String str1 = URLDecoder.decode("Java%E5%BC%80%E5%8F%91","UTF-8");
   System.out.println(str1);
   //将普通字符串转换成application/x-www-rorm-urlencoded字符串
   String str2=URLEncoder.encode("java程序开发","UTF-8");
   System.out.println(str2);
  } catch (UnsupportedEncodingException e) {
   // TODO Auto-generated catch block
   System.out.println(e.getMessage());
  }
 }
}
结果:
Java开发
java%E7%A8%8B%E5%BA%8F%E5%BC%80%E5%8F%91

你可能感兴趣的:(java)