我正在研究一个读取/var/log/auth.log文件的监视程序。我正在使用Apache Commons IO Tailer 类实时读取文件。首先,我想在一个简单的文件上测试实时阅读部件,然后在控制台行中手动输入一些代码。这是我的代码:

public class Main {
    public static void main(String[] args) {
        TailerListener listener = new MyListener();
        Tailer tailer = Tailer.create(new File("log.txt"), listener, 500);
        while(true) {

        }
    }
}

public class MyListener extends TailerListenerAdapter {
    @Override
    public void handle(String line) {
        System.out.println(line);
    }
}

从终端:sudo echo "Hello" >> log.txt问题是当我尝试在文件中手动写入内容时,它没有在控制台中打印出来。我试图找到使用Tailer类的具体示例,但是没有运气。我在这里做错了什么?

最佳答案

根据我的测试,Tailer仅在将换行符添加到文件后才打印一行。所以尝试sudo echo "Hello\n" >> log.txt
还要注意,如果调用create,则会启动一个线程,但没有线程。因此,为什么必须要有一个while/true循环。

您可以尝试以下方法:

public static void main(String[] args) {
    TailerListener listener = new MyListener();
    Tailer tailer = new Tailer(new File("log.txt"), listener, 500);
    tailer.run();
}

10-08 03:16