前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hutool监听文件工具类的demo

Hutool监听文件工具类的demo

作者头像
在水一方
发布2022-10-04 08:29:46
1.1K0
发布2022-10-04 08:29:46
举报
文章被收录于专栏:在水一方在水一方

前言

实际业务中可能会有这样一些需求,就是需要监控某个文件或者目录的文件的变动,如果有变动需要做某些操作,看到hutool中对这这部分做了封装,用起来更加简单了,觉得还是非常实用的,记录一下

官网说明

很多时候我们需要监听一个文件的变化或者目录的变动,包括文件的创建、修改、删除,以及目录下文件的创建、修改和删除,在JDK7前我们只能靠轮询方式遍历目录或者定时检查文件的修改事件,这样效率非常低,性能也很差。因此在JDK7中引入了WatchService。不过考虑到其API并不友好,于是Hutool便针对其做了简化封装,使监听更简单

demo案例

代码语言:javascript
复制
@RestController
public class Watch {
    // 服务启动就执行该方法	
    @PostConstruct
    public void  monitor() {
        File file = FileUtil.file("D:\\test.xlsx");
        //这里只监听文件或目录的修改事件
        WatchMonitor watchMonitor = WatchMonitor.create(file, WatchMonitor.ENTRY_MODIFY);
        watchMonitor.setWatcher(new Watcher(){
            @Override
            public void onCreate(WatchEvent<?> event, Path currentPath) {
                Object obj = event.context();
                Console.log("创建:{}-> {}", currentPath, obj);
            }
            @Override
            public void onModify(WatchEvent<?> event, Path currentPath) {
                Object obj = event.context();
                Console.log("修改:{}-> {}", currentPath, obj);
            }
            @Override
            public void onDelete(WatchEvent<?> event, Path currentPath) {
                Object obj = event.context();
                Console.log("删除:{}-> {}", currentPath, obj);
            }
            @Override
            public void onOverflow(WatchEvent<?> event, Path currentPath) {
                Object obj = event.context();
                Console.log("Overflow:{}-> {}", currentPath, obj);
            }
        });
        //设置监听目录的最大深入,目录层级大于制定层级的变更将不被监听,默认只监听当前层级目录
        watchMonitor.setMaxDepth(3);
        //启动监听
        watchMonitor.start();

    }

}

// 文件修改了2个地方就直接打印了2次

image.png
image.png
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 官网说明
  • demo案例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档