码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • JAVA 实现 UNIX tail -f 命令功能


    概述

    如果需要监视附加到文件末尾的行,通常使用带有“ -f ”参数的 UNIX 实用程序“ tail ”来实现。这是一个例子:

    tail -f /var/log/auth.log
    

    如果不仅需要监控附加到文件末尾的新行,还需要在您的应用程序中处理它们怎么办?幸运的是,有一些易于使用的解决方案,本文将介绍其中之一。 Apache Commons IO 提供了解决上述问题的功能。

    依赖项

    首先,必须添加相应的依赖项:

    1. <dependency>
    2. <groupId>commons-iogroupId>
    3. <artifactId>commons-ioartifactId>
    4. <version>2.5version>
    5. dependency>

    应用

    让我们创建一个应用程序来处理附加到文件末尾的行。

    1. import java.io.File;
    2. import org.apache.commons.io.input.Tailer;
    3. import org.apache.commons.io.input.TailerListenerAdapter;
    4. public class TailerApp {
    5. private static class NewLineListener extends TailerListenerAdapter {
    6. @Override
    7. public void handle(String line) {
    8. System.out.println(line);
    9. }
    10. }
    11. private final File file;
    12. private final long delay;
    13. private final TailerListenerAdapter newLineHandler;
    14. public TailerApp(File file, long delay, TailerListenerAdapter newLineHandler) {
    15. this.file = file;
    16. this.delay = delay;
    17. this.newLineHandler = newLineHandler;
    18. }
    19. public void run() {
    20. Tailer tailer = new Tailer(file, newLineHandler, delay);
    21. tailer.run();
    22. }
    23. public static void main(String[] args) {
    24. TailerApp tailer = new TailerApp(new File("C:\\inetpub\\logs\\LogFiles\\W3SVC1\\u_ex220730.log"), 500, new NewLineListener());
    25. tailer.run();
    26. }
    27. }


    必须指定三个参数:

    • 监控文件
    • 延迟(检查文件更改的频率)
    • 回调以处理新行

    要测试应用程序,让我们运行它并在同一文件夹中执行以下命令:

    1. echo -e "test1" >> test.txt
    2. echo -e "test2" >> test.txt
    3. echo -e "test3" >> test.txt

    这些命令将行附加到名为“test.txt”的文件的末尾,我们希望看到它们被我们的应用程序处理。

    让我们看一下应用程序的输出:

    1. test1
    2. test2
    3. test3

    因此,应用程序已成功检测到文件中的新行并对其进行处理

  • 相关阅读:
    【JAVA】 图书管理系统(javaSE简易版 内含画图分析) | 期末大作业&课程设计
    【虹科分享】什么是Redis数据集成(RDI)?
    AI算法工程师 | 03人工智能基础-Python科学计算和可视化(三)Pandas
    数据结构-难点突破(C++/Java详解实现串匹配算法KMP,next数组求法,KMP算法优化nextval数组)
    JS 深浅拷贝详解
    不一样的VR全景购物,赋能商超和店铺购物升级
    相交链表~环形链表
    澄海区图书馆《乡村振兴战略下传统村落文化旅游设计》许少辉八一新著
    LLMs NLP模型评估Model evaluation ROUGE and BLEU SCORE
    c#设计模式-结构型模式 之 享元模式
  • 原文地址:https://blog.csdn.net/allway2/article/details/126068398
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号