代码之家  ›  专栏  ›  技术社区  ›  callmebob ani627

WatchService问题-日志文件在修改时不刷新

  •  0
  • callmebob ani627  · 技术社区  · 6 年前

    我使用(第三方)Windows10应用程序,该应用程序生成。txt日志文件。在我自己的应用程序中,我编写了一个类,它使用WatchService并观察这些文件的文件夹。txt更改。我知道我的类工作正常,因为我使用其他文件/JUnit进行了测试。在测试过程中,所有的变化都会立即被发现,都是正确的。

    以防。txt日志没有任何内容被拾取。

    我到处玩,注意到只有在我进入浏览器窗口并点击F5(刷新)时,我的应用程序才会接收更新。文件大小被刷新,我的WatchService也会触发更新。

    知道为什么会发生这种奇怪的行为吗?它可能位于日志应用程序级别或Windows本身,但我想知道是否有人能用Java来解决这个问题?

    1 回复  |  直到 6 年前
        1
  •  0
  •   callmebob ani627    6 年前

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

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

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