Начните чтение с определенной точки до EOF, используя BufferedReader - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть класс, который построчно читает файл журнала, и я хотел бы начать с определенной точки в файле до конца файла.Например, начните чтение с отметки времени «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 голосов
/ 23 ноября 2018

Поскольку вы ищете в вашем файле специальную строку, вам нужно проверять каждую строку, пока не найдете ее.

Добавьте локальную переменную, чтобы отслеживать, следует ли обрабатывать строку или пропустить ее.

boolean isReading = false;

Тогда вместо isEmpty проверки сделайте

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

 if (!isReading) {
     continue;
 }

 //otherwise process line

Если вы не всегда можете сопоставить временную метку, вам лучше использовать matches() и регулярное выражение вместоиз startsWith()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...