有的时候我们常常希望流中的数据可以多次使用, 可是流读取完了之后就不能够再次读取了. 其实是其内部的指针移动到了最后了, 那么如果我们在使用该流的时候,就将其做一个标记,然后再需要使用的时候使指针复位,那么就可以达到重新使用的目的了.
package com;
import java.io.BufferedInputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class BufferedInputStreamDemo {
public static void main(String[] args) throws Exception {
URL url = new URL("http://www.2345.com/tg21145.htm");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
InputStream inputStream = connection.getInputStream();
BufferedInputStream bufInput = new BufferedInputStream(inputStream);
System.out.println(bufInput.available());
System.out.println(connection.getContentLength());
System.out.println(connection.getConnectTimeout());
System.out.println(connection.getContentType());
bufInput.mark(bufInput.available());//参数告知此输入流在标记位置失效之前允许读取的字节数 (但是设置为0 感觉没什么效果...)
byte[] buf = new byte[1024];
int len = -1;
while ((len = bufInput.read(buf)) != -1) {
System.out.println(new String(buf,0,len,"GBK"));
}
System.out.println("");
bufInput.reset();
len = bufInput.read(buf);
System.out.println(new String(buf,0,len,"GBK"));
connection.disconnect();
inputStream.close();
bufInput.close();
}
}