IO中 mark 和reset 的使用

来源:互联网 发布:蓝牙与单片机通信 编辑:程序博客网 时间:2024/04/25 23:34

有的时候我们常常希望流中的数据可以多次使用, 可是流读取完了之后就不能够再次读取了. 其实是其内部的指针移动到了最后了, 那么如果我们在使用该流的时候,就将其做一个标记,然后再需要使用的时候使指针复位,那么就可以达到重新使用的目的了.

 

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();}}

0 0
原创粉丝点击