请教各位前辈一个问题:
我在写一个数据库服务器日志的检查程序,寻找打开过,但100行之内没关闭的记录.遇到一个问题:简单的说,我逐行读取文件,有内外两层循环,当我外循环读到该文件第i行的时候,如何让内循环从该文件的第i+1行开始读?
代码已经写了,而且正确,但是如果文件稍大,那么计算量大的吓人,哪位给个好方法,谢谢.
import java.io.*;public class test

public static void main (String[] args)

try

FileReader fr1 = new FileReader("in.txt");
LineNumberReader br1 = new LineNumberReader(fr1); 
FileWriter fw1 = new FileWriter("out.txt"); 
PrintWriter out1 = new PrintWriter(fw1); 
String s1 = br1.readLine();    //逐行读日志
while ( s1 != null )
{
if((s1.indexOf("打开"))!=-1) //找出打开的
{
String ch1 = s1.substring(0,11); //得到打开的编号
                     //(编号不唯一,但正常来说,两个相同编号的打开之间肯定有一个关闭,否则数据库异常,我的代码就是找这些异常)

FileReader fr2 = new FileReader("in.txt");
LineNumberReader br2 = new LineNumberReader(fr2);

for(int i = 0; i < br1.getLineNumber(); i ++)
br2.readLine(); //问题在这里,虽然正确,但计算量超大

String s2 = br2.readLine();
int =0;

for(int j = 0; j < 100 && s2 != null; j ++)
{
if((s2.indexOf("关闭")!=-1)&&(s2.indexOf(ch1)!=-1))  //遇到编号相同且关闭,正常
{
=1;
break;
}
if((s2.indexOf("打开")!=-1)&&(s2.indexOf(ch1)!=-1))  //遇到编号相同且打开,异常
{
=0;
break;
}
s2 = br2.readLine();
}

if(!=1)  //把异常的输出到out.txt
{
out1.println(s1);
}

br2.close();    
fr2.close();    

}
s1 = br1.readLine();
} out1.close();   
fw1.close();    
br1.close();   
fr1.close();   
}

catch (FileNotFoundException e1)

System.err.println("File not found");
}
catch (IOException e2)

e2.printStackTrace(); 


}昨天有个前辈说用()和reset(),小弟我不会用,各位前辈可以参考一下,谢谢帮忙

解决方案 »

  1.   

    请各位前辈们帮忙解决一下这个难题,小弟感激不尽
      

  2.   

    这个问题让我很头疼,希望前辈们帮我一下,谢谢
      

  3.   

    不是不看。是你的问题有点复杂。给的分就这么点。没人肯看!
      

  4.   

    加到40分了,我只有这么多
    大家帮帮忙吧
      

  5.   

    我只有40分了,全给这帖子了
    这问题对各位高手来说并不复杂,而且只需要在我的代码基础上修改一下,不那么费劲的,还请大家帮我一下,小弟再次谢过了!!!
      

  6.   

    这代码搞的我头都大了,脑子很乱,各位高手就牺牲一点点时间,帮我看看吧