使用流程
1.创建一个URL类的对象url
2.通过URL类的对象url打开网络连接,并得到连接对象conn
3.通过连接对象,得到用于读出网页内容的输入流is
4.将上述字节流is 装饰为字符流,将字符流再装饰为一次能读取一行的字符流br
5.通过字符流br,读取一行内容,并将内容存储到变量text中
需要用到几个包
1.URL:
public URL(String protocol, String host, int port, String file) throws MalformedURLException.
通过给定的参数(协议、主机名、端口号、文件名)创建URL。
public URLConnection openConnection() throws IOException
打开一个URL连接,并运行客户端访问资源。
2.URLConnection
URLConnection 是一个抽象类,代表应用程序和 URL 之间的通信链接。它的实例可用于读取和写入此 URL 引用的资源。该类提供了比 Socket 类更易于使用、更高级的网络连接抽象。
通过 URL 对象的 openConnection()
方法可以获取URLConnection对象。
3.InputStream
字节输入流。
4.InputStreamReader
API文档说明:InputStreamReader类是从字节流到字符流的桥接器:它使用指定的字符集读取字节并将它们解码为字符。 它使用的字符集可以通过名称指定,也可以明确指定,或者可以接受平台的默认字符集。
每次调用一个InputStreamReader的read()方法都可能导致从底层字节输入流中读取一个或多个字节。 为了实现字节到字符的有效转换,可以从基础流中提取比满足当前读取操作所需的更多字节。
为了获得最高效率,请考虑在BufferedReader中包装InputStreamReader。
new InputStreamReader(System.in);
5.BufferedReader
API文档描述:
BufferedReader类从字符输入流中读取文本并缓冲字符,以便有效地读取字符,数组和行
可以通过构造函数指定缓冲区大小也可以使用默认大小。对于大多数用途,默认值足够大
由Reader构成的每个读取请求都会导致相应的读取请求由基础字符或字节流构成,建议通过BufferedReader包装Reader的实例类以提高效率如
BufferedReader br=new BufferedReader(new InputStreamReader(System.in))
以下是标准代码
1 import java.io.BufferedReader; 2 import java.io.IOException; 3 import java.io.InputStream; 4 import java.io.InputStreamReader; 5 import java.net.URL; 6 import java.net.URLConnection; 7 8 public static void main(String[] args) throws IOException { 9 // 1.创建一个URL类的对象url 10 URL url = new URL("https://www.baidu.com/"); 11 // 2.通过URL类的对象url打开网络连接,并得到连接对象conn 12 URLConnection conn = url.openConnection(); 13 // 3.通过连接对象,得到用于读出网页内容的输入流is 14 InputStream is = conn.getInputStream(); 15 // 4.将上述字节流is 装饰为字符流,将字符流再装饰为一次能读取一行的字符流br 16 BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8")); 17 // 5.通过字符流br,读取一行内容,并将内容存储到变量text中 18 String text = br.readLine(); 19 // 6.科技将读取到的内容text 输出显示到控制台 20 System.out.println(text); 21 }