有个程序,需要BufferedReader读到最后一行后,然后返回到第n行,因为还要用来做别的用处。
      因为以前不太常用这种方法,看了javadoc,public void (int readAheadLimit),于是自己随便填了数字进去,这么做的话,如果数据量很大,肯定会有错误出来,如果数据量很小,又有点浪费,现在不知道怎么改了,特地求教一下,应该怎么写才能让BufferedReader返回某一行呢?给点建议也成,谢谢   代码如下     (buf 就是那个BufferedReader)
         int i=0;
    strTemp = buf.readline();
    buf.(99999);
    while ((strTemp != null) && (strTemp.trim().length() != 0)){
         i++ ;
         strTemp = buf.readLine();
    }
    buf.reset();

解决方案 »

  1.   

    建议如下思路 int i=0;
        strTemp = buf.readline();
       int nMark = 999999;
        long size = 0;

        buf.(nMark);
        while ((strTemp != null) && (strTemp.trim().length() != 0)){
             i++ ;
             strTemp = buf.readLine();
             size += strTemp.length();
             if(size>n){
                  buf.reset();
                  nMark +=nMark;
                  buf.(nMark);
                  buf.skip(size);
              }
        }
        buf.reset();
    只是演示一下我的思路,关于效率,skip函数不会浪费太多时间的。
      

  2.   

    至于步长nMark,就可以根据估计的数据量,可能超出的范围来设定初始值以及每次增加多少。比如我这里每次增加一倍。