分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

web项目启动时配置监听本地目录文件添加, 删除, 修改, 等操作

发布时间:2023-09-06 01:36责任编辑:顾先生关键词:配置

大致原理:  通过配置监听器在web容器启动或销毁的时候做相应的操作, 系统目录的监听器使用从jdk1.7才有的WatchService

操作步骤: 1> 自定义自己的监听器实现ServletContextListener接口中的两个方法, 一个未初始化Init方法, 一个是销毁方法Destoryed, 

  由于WatchService为阻塞型方法, 所以需要新建线程防止web容器无法启动

 1 package com.mtl.fill.listener; 2 ?3 ?4 import com.mtl.fill.utils.ListenFile; 5 ?6 import javax.servlet.ServletContextEvent; 7 import javax.servlet.ServletContextListener; 8 ?9 public class MyListener implements ServletContextListener {10 ????@Override11 ????public void contextInitialized(ServletContextEvent servletContextEvent) {12 ????????new Thread(new ListenFile()).start();13 ????}14 15 ????@Override16 ????public void contextDestroyed(ServletContextEvent servletContextEvent) {17 18 ????}19 20 }

  2>  写出自己要执行的操作类, 因为用到了多线程, 所以继承Thread或者实现Runable接口

 1 package com.mtl.fill.utils; 2 ?3 import java.io.*; 4 import java.nio.file.*; 5 ?6 public class ListenFile implements Runnable { 7 ?8 ????@Override 9 ????public void run() {10 ????????//获取文件系统的WatchService对象11 ????????WatchService watchService = null;12 ????????try {13 ????????????watchService = FileSystems.getDefault().newWatchService();14 ????????????//为C:盘根路径注册监听15 ????????????Paths.get("D://scai_client").register(watchService16 ????????????????????//监听创建操作17 ????????????????????, StandardWatchEventKinds.ENTRY_CREATE18 ????????????????????//监听删除操作19 ????????????????????,StandardWatchEventKinds.ENTRY_DELETE20 ????????????????????//监听修改操作21 ????????????????????,StandardWatchEventKinds.ENTRY_MODIFY);22 ????????????//死循环一直监听23 ????????????while(true) {24 ????????????????//一直等待,直到获取下一个文件变化事件25 ????????????????WatchKey key = watchService.take();26 ????????????????//遍历监控获得的事件列表27 ????????????????for (WatchEvent<?> event : key.pollEvents()) {28 ????????????????????//event.context()返回触发事件的文件或目录29 ????????????????????System.out.println(event.context() + "发生了" + event.kind()+ "事件");30 ????????????????}31 ????????????????//重新设置WatchKey32 ????????????????boolean valid = key.reset();33 ????????????????//如果设置失败则退出监听34 ????????????????if (!valid) {35 ????????????????????break;36 ????????????????}37 ????????????}38 ????????} catch (IOException e) {39 ????????????e.printStackTrace();40 ????????} catch (InterruptedException e) {41 ????????????e.printStackTrace();42 ????????}43 ????}44 }

,这里directory监听引用了某位博主的博客, 但是找不到了, 所以抱歉无法报明出处了!

web项目启动时配置监听本地目录文件添加, 删除, 修改, 等操作

原文地址:https://www.cnblogs.com/DarkStreet/p/8280808.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved