使用Java.NET包下的URL类,可以将一个网页(链接)封装成一个URL对象。
URL对象有一个openStream()
方法,使用该方法可以获取该网页的输入流,我们可以通过读取输入流的方式获得网页的内容,并通过输出流写入HTML文件中。
方式一:
使用此方法需要指定输入流和输出流的字符编码,否则可能会出现乱码
步骤:
1. 通过URL对象的openStream()
方法获得网页的字节输入流
2. 将字节输入流转换成字符输入流
3. 为字符输入流加缓冲区
4. 定义一个字节输出流
5. 将字节输出流转换成字符输出流
6. 将读取到的数据写入文件
7. 关闭流
public void way_1() throws Exception {
InputStream inputStream;
InputStreamReader inputStreamReader;
BufferedReader bufferedReader;
FileOutputStream fileOutputStream;
OutputStreamWriter outputStreamWriter;
URL wangyi = new URL("http://www.163.com/");
inputStream = wangyi.openStream();
inputStreamReader = new InputStreamReader(inputStream, "gb2312");
bufferedReader = new BufferedReader(inputStreamReader);
String s;
File dest = new File("src/wangyi.html");
fileOutputStream = new FileOutputStream(dest);
outputStreamWriter = new OutputStreamWriter(fileOutputStream, "gb2312");
while ((s = bufferedReader.readLine()) != null) {
outputStreamWriter.write(s);
}
outputStreamWriter.close();
fileOutputStream.close();
bufferedReader.close();
inputStreamReader.close();
inputStream.close();
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
方式二:
使用此方法不需要指定输入流和输出流的字符编码(因为是通过字节的方式)
步骤:
1. 通过URL对象的openStream()
方法获得网页的字节输入流
2. 为字节输入流加缓冲
3. 创建字节输出流对象
4. 为字节输出流加缓冲
5. 读取数据,并写入HTML文件
6. 关闭流
public void way_2() throws Exception{
File dest = new File("src/wangyi2.html");
InputStream is;
FileOutputStream fos = new FileOutputStream(dest);
URL wangyi = new URL("http://www.163.com/");
is = wangyi.openStream();
BufferedInputStream bis = new BufferedInputStream(is);
BufferedOutputStream bos = new BufferedOutputStream(fos);
int length;
byte[] bytes = new byte[1024*20];
while((length = bis.read(bytes, 0, bytes.length)) != -1){
fos.write(bytes, 0, length);
}
bos.close();
fos.close();
bis.close();
is.close();
}