WatchService问题-修改后日志文件不会刷新

时间:2018-12-10 22:04:18

标签: java windows-10 watchservice

我使用一个(第三方)Windows10应用程序,该应用程序生成.txt日志文件。在我自己的应用程序中,我编写了一个类,该类使用WatchService并观察文件夹中的这些.txt更改。我知道我的班级正常工作,因为我已经用其他文件/ JUnit测试过。在测试过程中,所有更改均立即得到纠正。

如果是.txt日志,则什么也不会拾取。

我玩转并注意到,只有当我进入浏览器窗口并按F5(刷新)时,我的应用程序才会选择更新。文件大小被刷新,我的WatchService也会触发更新。

有人知道为什么会发生这种奇怪的行为吗?它可能在日志应用程序级别或Windows本身,但是我想知道是否有人可以使用Java提出解决方案?

1 个答案:

答案 0 :(得分:0)

因为没有建议,我将分享我所做的事情,我不是特别喜欢的解决方案,但这也许会对某人有所帮助。

为了刷新文件夹,我只创建了一个循环,用于检查文件大小。下面的代码检查所有文件的大小,但是如果您知道文件的确切名称,则也可以为该特定文件实现此名称。

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秒)更改为