温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java File文件如何监听变化

发布时间:2026-10-27 15:00:58 来源:亿速云 阅读:94 作者:小樊 栏目:编程语言

在 Java 中监听 File(文件或目录)变化,常见有 三种方式,从简单到专业依次如下:


一、Java 7+ 官方推荐:WatchService(最常用 ✅)

适合:监听目录变化(新增、修改、删除)

示例:监听目录文件变化

import java.nio.file.*;

public class WatchDemo {
    public static void main(String[] args) throws Exception {
        Path path = Paths.get("D:/test");
        WatchService watchService = FileSystems.getDefault().newWatchService();
        path.register(watchService,
                StandardWatchEventKinds.ENTRY_CREATE,
                StandardWatchEventKinds.ENTRY_MODIFY,
                StandardWatchEventKinds.ENTRY_DELETE);

        while (true) {
            WatchKey key = watchService.take();
            for (WatchEvent<?> event : key.pollEvents()) {
                System.out.println(event.kind() + " : " + event.context());
            }
            key.reset();
        }
    }
}

⚠️ 注意

  • 只能监听目录,不能直接监听单个文件
  • 某些系统(如 Linux)对“文件内容修改”不实时
  • Windows 下比较灵敏

二、定时轮询(最简单但粗暴)

适合:监听单个文件内容变化

示例

File file = new File("D:/test/a.txt");
long lastModified = file.lastModified();

while (true) {
    if (file.lastModified() != lastModified) {
        System.out.println("文件发生变化");
        lastModified = file.lastModified();
    }
    Thread.sleep(1000);
}

优点

  • 简单
  • 可监听单个文件

缺点

  • 不实时
  • 耗 CPU

三、第三方库(功能最强大 ✅✅)

1️⃣ Apache Commons IO

FileAlterationObserver observer =
        new FileAlterationObserver("D:/test");

FileAlterationMonitor monitor =
        new FileAlterationMonitor(1000);

observer.addListener(new FileAlterationListenerAdaptor() {
    @Override
    public void onFileChange(File file) {
        System.out.println("文件修改:" + file);
    }
});

monitor.addObserver(observer);
monitor.start();

2️⃣ hutool(国产,好用)

WatchMonitor.createAll(
    "D:/test",
    WatchMonitor.ENTRY_MODIFY
).setWatcher((action, file) -> {
    System.out.println(file + " 变化");
}).start();

四、方案对比

方案 实时性 是否支持单文件 推荐度
WatchService 中 ❌(目录) ⭐⭐⭐⭐
轮询 低 ✅ ⭐⭐
Commons IO 高 ✅ ⭐⭐⭐⭐⭐
Hutool 高 ✅ ⭐⭐⭐⭐⭐

五、推荐建议

  • 监听目录变化 → WatchService
  • 监听单个文件 → Commons IO / Hutool
  • 生产环境 → Commons IO 或 Hutool

如果你告诉我:

  • Java 版本
  • 监听文件还是目录
  • 是否需要跨平台

我可以给你最合适的完整代码。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手