URL类
- URL的类方法
- 构造方法
- 普通方法
- URLConnections 类方法
- 读取URL中的资源
1️⃣URL的实例封装着一个统一资源定位符(Uniform Resourse Locator),使用URL创建对象的应用程序称作客户端程序。
2️⃣一个URL对象封装着一个具体的资源的引用,表明客户要访问这个URL中的资源,客户利用URL对象可以获取URL中的资源。
3️⃣一个URL对象通常包含最基本的3部分信息:协议、地址、资源。
protocol://host:port/path?query#fragment
4️⃣协议必须是URL对象所在的Java虚拟机支持的协议,许多协议并不为我们所常用,而常用的HTTP、HTTPS、FTP、File协议都是虚拟机支持的协议;地址必须是能连接的有效IP地址或域名;资源可以是主机上的任何一个文件。
5️⃣URL实例:http://www.google.com/index.html?language=cn#j2se
URL的类方法
构造方法
java.net包中定义了URL类,该类用来处理有关URL的内容。对于URL类的创建和使用。
普通方法
URL类中包含了很多方法用于访问URL的各个部分。
URLConnections 类方法
openConnection() 返回一个 java.net.URLConnection。
1️⃣如果你连接HTTP协议的URL, openConnection() 方法返回 HttpURLConnection 对象。
2️⃣如果你连接的URL为一个 JAR 文件, openConnection() 方法将返回 JarURLConnection 对象。
读取URL中的资源
① URL对象调用InputStream openStream()方法可以返回一个输入流,该输入流指向URL对象所包含的资源。通过该输入流可以将服务器上的资源信息读入到客户端。
②URL对象调用InputStream openStream()方法可以返回一个输入流,该输入流指向URL对象所包含的资源。通过该输入流可以将服务器上的资源读入客户端。
例子:用户在命令行窗口输入网址,读取服务器上的资源,由于网络速度或其他因素,URL资源的读取可能会引起堵塞;因此,程序需在一个线程中读取URL资源,以免堵塞主线程。
Look.java
package UrlClass;
import java.net.*;
import java.io.*;
public class Look implements Runnable{
URL url;
public void setUrl(URL url){
this.url = url;
}
@Override
public void run() {
try{
InputStream in = url.openStream();
byte[] b = new byte[1024];
int n=-1;
while ((n=in.read(b))!=-1){
String str = new String(b,0,n);
System.out.println(str);
}
}catch (IOException e){
}
}
}
Main.java
package UrlClass;
import java.net.URL;
import java.util.Scanner;
public class Main {
public static void main(String []args){
Scanner scanner;
URL url;
Thread readURL;
Look look = new Look();
System.out.println("输入URL资源,例如:http://www.yahoo.com");
scanner = new Scanner(System.in);
String sourse = scanner.nextLine();
try{
url = new URL(sourse);
look.setUrl(url);
readURL = new Thread(look);
}catch (Exception e){
System.out.println(e);
}
readURL = new Thread(look);
readURL.start();
}
}
Java中Scanner类中的方法next()和nextLine()都是吸取输入台输入的字符。
区别:
next()不会吸取字符前/后的空格/Tab键,只吸取字符,开始吸取字符(字符前后不算)直到遇到空格/Tab键/回车截止吸取;
nextLine()吸取字符前后的空格/Tab键,回车键截止。