我正在使用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
}
}
}
提前致谢。
答案 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));
}
}