Продолжайте проверять текст в файле до тех пор, пока он не будет найден или не истечет время ожидания. - PullRequest
0 голосов
/ 29 ноября 2018

Мне нужно проверить файл журнала ошибок в течение определенного времени после запуска процесса.Либо найденное слово, либо истекло время ожидания. Мне нужно выйти, сообщив, что текст найден или текст не найден до истечения времени ожидания.Я пытался, как показано ниже, но не смог достичь

public void waitFortext(String expectedText,
    String filePath){
    long timeout = 50000 + System.currentTimeMillis();
    File file = new File(filePath);
    String content = FileUtils.readFileToString(file, "UTF-8");
    boolean available = false;
    while (available || System.currentTimeMillis() > timeout) {
        available = content.contains(expectedText);
        Thread.sleep(500);
        if (available) {
            return;
        }
    }
}`

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Проблема в том, что вы читаете файл только один раз.

Переместите строку

String content = FileUtils.readFileToString(file, "UTF-8");

внутри цикла (сделайте это первым оператором.

0 голосов
/ 29 ноября 2018

Создайте переменную oldTime и установите ее на System.nanoTime, когда вы хотите, чтобы время началось.Создайте переменную newTime и обновляйте ее до System.nanoTime каждый раз, когда код повторяется.Сравните разницу этих двух значений с требуемым количеством времени, выходя из цикла, когда разница больше.

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