如果需要监视附加到文件末尾的行,通常使用带有“ -f ”参数的 UNIX 实用程序“ tail ”来实现。这是一个例子:
tail -f /var/log/auth.log
如果不仅需要监控附加到文件末尾的新行,还需要在您的应用程序中处理它们怎么办?幸运的是,有一些易于使用的解决方案,本文将介绍其中之一。 Apache Commons IO 提供了解决上述问题的功能。
首先,必须添加相应的依赖项:
- <dependency>
- <groupId>commons-iogroupId>
- <artifactId>commons-ioartifactId>
- <version>2.5version>
- dependency>
让我们创建一个应用程序来处理附加到文件末尾的行。
-
- import java.io.File;
- import org.apache.commons.io.input.Tailer;
- import org.apache.commons.io.input.TailerListenerAdapter;
-
- public class TailerApp {
-
- private static class NewLineListener extends TailerListenerAdapter {
-
- @Override
- public void handle(String line) {
- System.out.println(line);
- }
- }
-
- private final File file;
- private final long delay;
- private final TailerListenerAdapter newLineHandler;
-
- public TailerApp(File file, long delay, TailerListenerAdapter newLineHandler) {
- this.file = file;
- this.delay = delay;
- this.newLineHandler = newLineHandler;
- }
-
- public void run() {
- Tailer tailer = new Tailer(file, newLineHandler, delay);
- tailer.run();
- }
-
- public static void main(String[] args) {
- TailerApp tailer = new TailerApp(new File("C:\\inetpub\\logs\\LogFiles\\W3SVC1\\u_ex220730.log"), 500, new NewLineListener());
- tailer.run();
- }
- }
必须指定三个参数:
要测试应用程序,让我们运行它并在同一文件夹中执行以下命令:
- echo -e "test1" >> test.txt
- echo -e "test2" >> test.txt
- echo -e "test3" >> test.txt
这些命令将行附加到名为“test.txt”的文件的末尾,我们希望看到它们被我们的应用程序处理。
让我们看一下应用程序的输出:
- test1
- test2
- test3
因此,应用程序已成功检测到文件中的新行并对其进行处理