使用BufferedReader从特定点开始读取EOF

时间:2018-11-23 10:05:12

标签: java bufferedreader

我有一个类,它逐行读取日志文件,我想从文件中的特定点开始直到文件结束。例如,从时间戳'2018-11-23 09:00'开始读取到文件末尾。我已经检查了与读取文件有关的BufferedReader问题,但没有答案有帮助。

BufferedReader reader = new BufferedReader(new FileReader(path));
while ((line = reader.readLine()) != null) {
    if(!line.isEmpty()){//I would like to start reading from a specific timestamp to the end of the file
        if(line.toLowerCase().contains(keyword)){
            if(line.length() > 16) {
                if (line.substring(0, 1).matches("\\d")){
                    dateTimeSet.add(line.substring(0, 16));//Adds timestamp to my list
                    errorSet.add(line);
                }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

由于您要查找文件中出现的特殊字符串,因此需要检查每一行,直到找到它为止。

添加局部变量以跟踪您是否应该处理该行或跳过该行

boolean isReading = false;

然后代替您的isEmpty检查做

 if (!isReading) {
     isReading = line.startsWith(timestamp);
 }

 if (!isReading) {
     continue;
 }

 //otherwise process line

如果不能总是匹配时间戳,最好使用matches()和正则表达式代替startsWith()