Проблемы с WatchService - файл журнала не обновляется при модификации - PullRequest
0 голосов
/ 11 декабря 2018

Я использую (стороннее) приложение для Windows10, которое генерирует файлы журнала .txt.В моем собственном приложении я написал класс, который использует WatchService и наблюдает за папкой для этих изменений .txt.Я знаю, что мой класс работает правильно, потому что я тестировал с другими файлами / JUnit.Во время тестирования изменения сразу фиксируются, все правильно.

В случае логов .txt ничего не берется.

Я поиграл и заметил, что мое приложение подхватывает только обновленияесли я иду в окно проводника и нажимаю F5 (обновить).Размер файла обновляется, а также мой WatchService запускает обновление.

Есть идеи, почему это странное поведение может произойти?Вероятно, это на уровне приложения журнала или самой Windows, но мне интересно, кто-нибудь может придумать решение этой проблемы с Java?

1 Ответ

0 голосов
/ 11 декабря 2018

Поскольку нет предложений, которыми я поделюсь тем, что сделал, решение, которое мне не особенно нравится, но, возможно, оно кому-нибудь пригодится.

Чтобы обновить папку, я просто создал цикл, который проверяет размеры файлов.Приведенный ниже код проверяет размеры всех файлов, но если вы знаете точное имя файла, вы также можете реализовать это для этого конкретного файла.

File folder = new File("C:\\path\\to\\logs\\");
while (true)
{
    Thread.sleep(5000);

    File[] listOfFiles = folder.listFiles();
    for (File f : listOfFiles)
    {
        System.out.println("\tFile size: " + f.length());
    }
}

Вы также можете изменить значение спящего режима с 5000 (5 секунд), если вам нужно его проверять более или менее часто.

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