java监控文件夹下的文件变化使用jnotify
https://blog.csdn.net/codepython/article/details/42341243?utm_source=blogxgwz1
使用jnotify
https://blog.csdn.net/stalin_/article/details/80234979
下载资源,添加maven导入
开发时把jnotify_64bit.dll(64位系统用)扔到jdk的jre文件夹下bin目录比如C:\Program Files\Java\jdk1.8.0_201\jre\bin下
如果是部署,参照rxtx一文https://www.cnblogs.com/jnhs/p/10274667.html
应该把dll放在C:\WINDOWS\system32下才可
新建一个util包
新建一个Jnotify类
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.hs.util; import net.contentobjects.jnotify.JNotify;
import net.contentobjects.jnotify.JNotifyAdapter;
import net.contentobjects.jnotify.JNotifyException; public class Jnotify extends JNotifyAdapter { private static final String REQUEST_BASE_PATH = "D:\\csdnautodl\\tempfile";
/**
* 被监视的目录
*/
String path = REQUEST_BASE_PATH;
/**
* 关注目录的事件
*/
int mask = JNotify.FILE_CREATED | JNotify.FILE_DELETED | JNotify.FILE_MODIFIED | JNotify.FILE_RENAMED;
/**
* 是否监视子目录,即级联监视
*/
boolean watchSubtree = true;
/**
* 监听程序Id
*/
public int watchID; /**
* 容器启动时启动监视程序
*
*
*/
public void beginWatch() {
/**
* 添加到监视队列中
*/
try {
this.watchID = JNotify.addWatch(path, mask, watchSubtree, this);
System.err.println("jnotify -----------启动成功-----------");
} catch (JNotifyException e) {
e.printStackTrace();
}
/**
* 死循环,线程一直执行,休眠一分钟后继续执行,主要是为了让主线程一直执行 休眠时间和监测文件发生的效率无
* (就是说不是监视目录文件改变一分钟后才监测到,监测几乎是实时的,调用本地系统库)
*
*/
while (true) {
try {
Thread.sleep(60000);
} catch (InterruptedException e) {// ignore it
}
}
} /**
* 当监听目录下一旦有新的文件被创建,则即触发该事件
*
* @param wd 监听线程id
* @param rootPath 监听目录
* @param name 文件名称
*/
@Override
public void fileCreated(int wd, String rootPath, String name) {
System.err.println("文件被创建, 创建位置为: " + rootPath + "/" + name);
} @Override
public void fileRenamed(int wd, String rootPath, String oldName, String newName) {
System.err.println("文件被重命名, 原文件名为:" + rootPath + "/" + oldName
+ ", 现文件名为:" + rootPath + "/" + newName);
} @Override
public void fileModified(int wd, String rootPath, String name) {
System.err.println("文件内容被修改, 文件名为:" + rootPath + "/" + name);
} @Override
public void fileDeleted(int wd, String rootPath, String name) {
System.err.println("文件被删除, 被删除的文件名为:" + rootPath + name);
}
}
然后在窗体程序执行的时候开始启动监视

java监控文件夹下的文件变化使用jnotify的更多相关文章
- java笔试题: ——将e:/source文件夹下的文件打个zip包后拷贝到f:/文件夹下面
将e:/source文件夹下的文件打个zip包后拷贝到f:/文件夹下面 import java.io.*; import java.util.zip.ZipEntry; import java.uti ...
- java读取文件夹下所有文件并替换文件每一行中指定的字符串
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.I ...
- java中File类应用:遍历文件夹下所有文件
练习: 要求指定文件夹下的所有文件,包括子文件夹下的文件 代码: package 遍历文件夹所有文件; import java.io.File; public class Test { public ...
- FILE文件删除操作(删除指定文件夹下所有文件和文件夹包括子文件夹下所有文件和文件夹),就是删除所有
2018-11-05 19:42:08开始写 选择 删除 1.FileUtils.java类 import java.io.File;//导入包 import java.util.List;//导入 ...
- C#遍历文件夹下所有文件
FolderForm.cs的代码如下: using System; using System.Collections.Generic; using System.Diagnostics; using ...
- python 替换 文件夹下的 文件名称 及 文件内容
示例效果: 1.替换某文件夹下的 文件夹及子文件夹 的名称 由OldStrDir 变为 NewStrDir: 2.替换某文件夹下的 文件夹及子文件夹 下 所有的文件的名称 由OldStrFile 变为 ...
- 【转发】du命令 实现Linux 某个文件夹下的文件按大小排序
1. df -lh 2. du -s /usr/* | sort -rn这是按字节排序 3. du -sh /usr/* | sort -rn这是按兆(M)来排序 4.选出排在前面的10个du -s ...
- python (9)统计文件夹下的所有文件夹数目、统计文件夹下所有文件数目、遍历文件夹下的文件
命令:os 用到的:os.walk os.listdir 写的爬虫爬的数据,但是又不知道进行到哪了,于是就写了个脚本来统计文件的个数 #统计 /home/dir/ 下的文件夹个数 import o ...
- PHP遍历文件夹下的文件和获取到input name的值
<?php$dir = dirname(__FILE__); //要遍历的目录名字 ->当前文件所在的文件夹//$dir='D:\PHP\wamp\www\admin\hosts\admi ...
- 【转】【Linux】Linux下统计当前文件夹下的文件个数、目录个数
[转][Linux]Linux下统计当前文件夹下的文件个数.目录个数 统计当前文件夹下文件的个数,包括子文件夹里的 ls -lR|grep "^-"|wc -l 统计文件夹下目录的 ...
随机推荐
- VS2010-MFC(图形图像:GDI对象之画笔CPen)
转自:http://www.jizhuomi.com/software/246.html 上一节讲了CDC类及其屏幕绘图函数,本节的主要内容是GDI对象之画笔CPen. GDI对象 在MFC中,CGd ...
- (一)通过JAVA连接SAP (sapjco3.jar在Windows和MacOS上的配置)
(一)通过JAVA连接SAP调用接口 (sapjco3.jar在Windows和MacOS上的配置) 一.sapjoc3.jar获取 由于sap官网提供的链接需要合作公司提供账号密码,如果商用请索要正 ...
- HDU-3068-最长回文-马拉车算法模板题
给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度. 回文就是正反读都是一样的字符串,如aba, abba等 Input输入有多组case,不超过120组,每组输入为 ...
- day 67 Django基础三之视图函数
Django基础三之视图函数 本节目录 一 Django的视图函数view 二 CBV和FBV 三 使用Mixin 四 给视图加装饰器 五 Request对象 六 Response对象 一 Dja ...
- Font Awesome 完全兼容 Bootstrap 的所有组件。
"F_FullName": "其他", "F_Icon": "glyphicon glyphicon-backward fa-lg ...
- 第三周课堂笔记4thand5th
循环打印 #计算字典中的键值对的个数 print(len(a)) #获取字典中键的列表 print(a.keys()) #获取字典中值的列表 print(a.values()) #获取字典中键值对的个 ...
- 面试系列九 es 提高查询效率
,es性能优化是没有什么银弹的,啥意思呢?就是不要期待着随手调一个参数,就可以万能的应对所有的性能慢的场景.也许有的场景是你换个参数,或者调整一下语法,就可以搞定,但是绝对不是所有场景都可以这样. 一 ...
- inux下tcpdump命令的使用
tcpdump | grep 120.241.0.223 tcpdump | grep 106.39.153.237 tcpdump host 172.31.140.147 and 120.241.0 ...
- 基于windows消息的响应USB插入或取出
导语:当有设备进入windows时,系统会向所有的应用层发送WM_DEVICECHANGE消息.进一步根据相应的事件判断设备. LRESULT CALLBACK WndProc(HWND hWnd, ...
- 廖雪峰Java12maven基础-1maven入门-2依赖管理
maven 如果我们的项目依赖第三方的jar包: Commons Logging发布的jar包在那里下载? 使用Log4j需要哪些jar包 其他依赖:junit,Javamail,MySQL驱动... ...