mark和reset的网上注解

来源:互联网 发布:js怎么验证邮箱 编辑:程序博客网 时间:2024/06/05 07:17
mark就像书签一样,在这个BufferedReader对应的buffer里作个标记,以后再调用reset时就可以再回到这个mark过的地方。mark方法有个参数,通过这个整型参数,你告诉系统,希望在读出这么多个字符之前,这个mark保持有效。读过这么多字符之后,系统可以使mark不再有效,而你不能觉得奇怪或怪罪它。这跟buffer有关,如果你需要很长的距离,那么系统就必须分配很大的buffer来保持你的mark。   
  //eg.   
  //reader is a BufferedReader   
    
  reader.mark(50);//要求在50个字符之内,这个mark应该保持有效,系统会保证buffer至少可以存储50个字符   
  int a = reader.read();//读了一个字符   
  int b = reader.read();//又读了一个字符   
    
  //做了某些处理,发现需要再读一次   
  reader.reset();   
  reader.read();//读到的字符和a相同   

  reader.read();//读到的字符和b相同

a.txt 内容为>>:abcdefghijklmnopqrstuvwxyz


import java.io.*;
public class Test2{
public static void main(String[] args){
try{
BufferedInputStream bis=new BufferedInputStream(new FileInputStream("d:/我的文档/桌面/java练习/IO/a.txt"));
System.out.println((char)bis.read());
System.out.println((char)bis.read());
bis.mark(6);//6.0中不管读多少mark仍然有效
System.out.println((char)bis.read());
System.out.println((char)bis.read());
bis.reset();
System.out.println((char)bis.read());
System.out.println((char)bis.read());
}catch(IOException e){
e.printStackTrace();
}
}
}


6.0下测试结果为:
a
b
c
d
c
d

原创粉丝点击