gpt4 book ai didi

java - 如何通过读取 bufferedreader 获取前一行的可变数量

转载 作者:行者123 更新时间:2023-11-30 08:27:32 25 4
gpt4 key购买 nike

我正在使用 BufferedReader 逐行读取日志文件。如果一行与精确模式匹配,我也会获取之前的行。该行号由用户输入。例如模式是“错误”和行号 3,所以我将存储错误行和前 3 行。

 FileInputStream fInStream = new FileInputStream(fileBase);
br = new BufferedReader(new InputStreamReader(fInStream));

while ((line = br.readLine()) != null) {
if(line.contains("ERROR")){
//here, i should write previous 3 lines and then ERROR line
bw.write(line + "\r\n");
}
}

如有任何建议,我们将不胜感激。

最佳答案

您必须保存读取的最后 n 行,以便在遇到错误行时始终显示它们。

困难的部分是创建一个数据结构来为您跟踪最后 n 行。

也许您可以使用类似于此问题的答案 Looking for a circular fixed size array-based deque

所以你的代码看起来像这样

Ring ring = new Ring(n);
while ((line = br.readLine()) != null) {

if(line.contains("ERROR")){
//note no checking to see if there are n lines
//currently stored in Ring maybe have to make a size() method
// and check that
for(int i=0; i<n; i++){
bw.write(ring.get(i) + "\r\n");
}
bw.write(line + "\r\n");
}
//add line to Ring here
ring.push(line);
}

关于java - 如何通过读取 bufferedreader 获取前一行的可变数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20803500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com