springboot项目中对文件夹进行监控

  • 需要的依赖

  1. <!--监控文件夹 使用Commons-io的monitor下的相关类可以处理对文件进行监控-->
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.6</version>
    </dependency>
  • 新建一个ZJPFileLIstener.java文件 
  1. package com.zjjzfy.upload.listener;
    
    import com.zjjzfy.upload.service.UserService;
    import com.zjjzfy.upload.util.Md5Util;
    import com.zjjzfy.upload.util.ZipUtil;
    import lombok.extern.slf4j.Slf4j;
    import org.apache.commons.io.monitor.FileAlterationListener;
    import org.apache.commons.io.monitor.FileAlterationObserver;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    
    import javax.annotation.PostConstruct;
    import java.io.File;
    import java.io.IOException;
    
    @Slf4j   //@Slf4j 类上使用该注解,可以直接使用log变量
    @Component
    public class ZJPFileListener  implements FileAlterationListener {
        private static ZJPFileListener zjpFileListener;
    
    
        @Autowired
        UserService userServiceImpl;
    
        ZJPFileMonitor monitor = null;
    
        /**
         *通过@PostConstruct实现初始化bean之前进行的操作 
         */
        public void init() {
            zjpFileListener = this;
        }
    
        /**
         *
         * @param fileAlterationObserver
         */
        @Override
        public void onStart(FileAlterationObserver fileAlterationObserver) {
            //业务代码
        }
    
        /**
         * 监控目录中创建一个目录时触发
         * @param file
         */
        @Override
        public void onDirectoryCreate(File file) {
            //业务代码
        }
    
        /**
         * 监控目录中目录发生改变触发
         * @param file
         */
        @Override
        public void onDirectoryChange(File file) {
            //业务代码
        }
    
        /**
         * 监控目录中目录发生删除触发
         * @param file
         */
        @Override
        public void onDirectoryDelete(File file) {
            //业务代码
    
        }
    
        /**
         * 监控目录中创建文件时触发
         * @param file
         */
        @Override
        public void onFileCreate(File file) {
           //业务代码
        }
    
        /**
         * 监控目录中改变文件时触发
         * @param file
         */
        @Override
        public void onFileChange(File file) {
            //业务代码
        }
    
        /**
         * 监控目录中文件删除时触发
         * @param file
         */
        @Override
        public void onFileDelete(File file) {
            //业务代码
        }
    
        /**
         *
         * @param fileAlterationObserver
         */
        @Override
        public void onStop(FileAlterationObserver fileAlterationObserver) {
    
        }
    
    }
    

    需要注意的是业务代码中当要使用到Service层实现业务代码时,

       

         这样引入的不在Controller层是会出现无法注入的问题,使用的时候会出现空指针情况,所以添加下面的代码

       

       后面使用的时候使用this.userServiceImpl 这样问题就解决了

       

  • 新建一个ZFPFileMonitor.java文件 
package com.zjjzfy.upload.listener;

import org.apache.commons.io.monitor.FileAlterationListener;
import org.apache.commons.io.monitor.FileAlterationMonitor;
import org.apache.commons.io.monitor.FileAlterationObserver;

import java.io.File;

public class ZJPFileMonitor {
    FileAlterationMonitor monitor = null;
    public ZJPFileMonitor(long interval) throws Exception {
        monitor = new FileAlterationMonitor(interval);
    }
    //监控方法
    public void monitor(String path, FileAlterationListener listener) {
        FileAlterationObserver observer = new FileAlterationObserver(new File(path));
        monitor.addObserver(observer);
        observer.addListener(listener);
    }
    //监控停止
    public void stop() throws Exception{
        monitor.stop();
    }
    //监控开始
    public void start() throws Exception {
        monitor.start();
    }
}
  • 启动监控

将代码发在springboot的默认启动类中,interver表示隔多久监控一次   D:\\Share 表示监控的指定目录

new ZJPFileListener 是我们新建的第一个java文件   使用m.start来开始监控。

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值