SpringBoot借助Hutool简单实现文件目录监听功能

1. 背景

借助hutool工具包,实现简单的文件监听,从而实现具体的业务。比如,日报、月报的实时推送等

2. hutool依赖

hutoo中文文档


<dependency>
	  <groupId>cn.hutoolgroupId>
	  <artifactId>hutool-allartifactId>
	  <version>5.7.12version>
dependency>

3. 具体代码示例

package com.example.demo.monitor;

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.watch.WatchMonitor;
import cn.hutool.core.io.watch.Watcher;
import cn.hutool.core.lang.Console;
import cn.hutool.core.util.ObjectUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.io.File;
import java.nio.file.Path;
import java.nio.file.WatchEvent;

/**
 * @Author: zongshaofeng
 * @Description: 文件目录监控
 * @Date:Create:in 2021/10/31 14:58
 * @Modified By:
 */
@Slf4j
@Component
public class FileMonitor {
	
	@PostConstruct
	public void fileCreateMonitor() {
		// 指定监听目录,实际应用需要由外部配置文件进行配置
		String dirPath = "D:/report/";
		File file = FileUtil.file(dirPath);
		if (ObjectUtil.isNull(file) && !file.exists()) {
			log.info("监听目录:{},不存在,请检查并修改配置文件后重启程序。", dirPath);
			return;
		}
		// 只监听目录的创建事件
		WatchMonitor watchMonitor = WatchMonitor.create(file, WatchMonitor.ENTRY_CREATE);
		watchMonitor.setWatcher(new Watcher() {
			@Override
			public void onCreate(WatchEvent<?> watchEvent, Path path) {
				// 在监听创建事件回调中进行业务处理
				// TODO 拿到文件进行IO操作,具体业务具体分析
				// 此处简单打印一下目录路径和文件名称
				Object context = watchEvent.context();
				log.info("创建:{}-->{}", path, context);
			}
			
			@Override
			public void onModify(WatchEvent<?> watchEvent, Path path) {
			}
			
			@Override
			public void onDelete(WatchEvent<?> watchEvent, Path path) {
			}
			
			@Override
			public void onOverflow(WatchEvent<?> watchEvent, Path path) {
			}
		});
		// 设置监听目录的最大深度,目录层级大于指定层级的变更将不再监听,不设置默认只监听当前目录
		watchMonitor.setMaxDepth(3);
		// 启动监听
		watchMonitor.start();
	}
}

效果截图:
SpringBoot借助Hutool简单实现文件目录监听功能_第1张图片

你可能感兴趣的:(开发百宝箱系列,spring,boot,java,后端)