2012-01-26 59 views
0

我正在使用java扫描器类来扫描日志文件并搜索异常,然后一旦发现异常,我想在它之前打印20行,之后打印20行。 有没有一个选项可以返回20行,一旦我发现我的异常 这样的代码。Java文件扫描器将光标向后移动

Scanner in = null; 
     try { 
      in = new Scanner(new FileReader(f)); 
      while(in.hasNextLine() && !result) { 
       result = in.nextLine().indexOf(searchString) >= 0; 
       if (result) 
       { 
        //return 20 lines 
       } 
      } 
     } 

在此先感谢。

回答

4

在读取它们时缓冲行。当您发现错误时,请阅读下一个20并缓存这些错误。然后返回缓冲区。

+0

如果下20行包含行作者尝试匹配该怎么办?在这种情况下,算法需要比这更复杂。 – bezmax

+0

我以为他只对第一次发生感兴趣。我只能处理问题中的问题:) –