我使用一个(第三方)Windows10应用程序,该应用程序生成.txt日志文件。在我自己的应用程序中,我编写了一个类,该类使用WatchService并观察文件夹中的这些.txt更改。我知道我的班级正常工作,因为我已经用其他文件/ JUnit测试过。在测试过程中,所有更改均立即得到纠正。
如果是.txt日志,则什么也不会拾取。
我玩转并注意到,只有当我进入浏览器窗口并按F5(刷新)时,我的应用程序才会选择更新。文件大小被刷新,我的WatchService也会触发更新。
有人知道为什么会发生这种奇怪的行为吗?它可能在日志应用程序级别或Windows本身,但是我想知道是否有人可以使用Java提出解决方案?
答案 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秒)更改为
。