Java的inputStream类中的()方法如何应用啊?

解决方案 »

  1.   

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

  2.   

    上面说的很对 通俗可以说在调用的地方做上标记,参数readlimit说明在读取readlimit个字符后书签做废(6.0好像没有失效 ,仍然可以标记位置),使用reset后回到标记的位置.
    例如
    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.(6);//6.0中不管读多少仍然有效
    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