Java文件扫描程序将光标移回

时间:2012-01-26 11:01:01

标签: java java.util.scanner

我正在使用java扫描程序类扫描日志文件并搜索异常然后一旦我找到异常,我想在它之前打印20行,在它之后打印20行。 一旦发现我的异常,是否有选项可以返回20行 像这样的代码。

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
                }
            }
        }

提前致谢。

2 个答案:

答案 0 :(得分:4)

在阅读时缓冲线条。当您找到错误时,请阅读下一个20并缓冲它们。然后返回缓冲区。

答案 1 :(得分:0)

您可以将文件读入 List 并使用 ListIterator。

List<String> logList = Files.readAllLines(Paths.get(filename));
ListIterator iter = logList.listIterator();
String result = "match string";
while(iter.hasNext() && !result);
int indexMatch = iter.previousIndex();
    // Print previous 20 lines and next 20 lines
    for(int i=-20;i<40;i++){
        System.out.println(logList.get(indexMatch+i));
    } 
}