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 统计文件夹下目录的 ...
随机推荐
- WinDBG常用断点命令
WinDBG提供了多种设断点的命令: bp 命令是在某个地址 下断点, 可以 bp 0x7783FEB 也可以 bp MyApp!SomeFunction . 对于后者,WinDBG 会自动找到MyA ...
- Python中%r和%s的详解及区别_python_脚本之家
Python中%r和%s的详解及区别_python_脚本之家 https://www.jb51.net/article/108589.htm
- error C2146: 语法错误: 缺少“;”(在标识符“CRC”的前面) ...\...\MyMethod.h
错误原因:头文件的顺序错误,这种情况一般是因为dxsdk的头文件放在其他头文件前面了. 问题复现: 这里如果将#include <ReadDataThreadClass.h>放到最末尾就不 ...
- 通过aapt查看apk包名和第一个启动的activity
步骤: ps:aapt是sdk 自带的一个工具,在sdk\builds-tools目录下: 1. cmd启动控制台, 默认是c盘,输入“d:” 即可转到D盘目录 2. 到D盘后 输入cd 子文件目录转 ...
- java_Properties集合
package propertiesTest; import java.io.FileReader; import java.io.FileWriter; import java.io.IOExcep ...
- WebClient 上传文件 上传文件到服务器端
一直对于上传文件到服务器端困惑:以前,现在,学到了关于WebClient的post知识 瞬间对于上传文件到服务器觉得好轻松: 原理很简单:我们通过post服务器的页面:把本地的文件直接传递过去: 现在 ...
- mount: you must specify the filesystem type
最近工作中遇到一个问题,在linux mount /dev/vdb 到 /home 分区时报错: 1 2 # mount /dev/vdb /home mount: you must specif ...
- linq学习(第二部分)
8.匿名方法 (1)源起 在上面的例子中 为了得到序列中较大的值 我们定义了一个More方法 var d1 = new Predicate<int>(More); 然而这个方法,没有太多逻 ...
- 【分块】P4135 作诗
分块太暴力惹... 没做出来.看了题解qaq 分析: 两头$\sqrt{n}$暴力维护 预处理ans[i][j],sum[i][j] sum[i][j]是一个前缀和,前i块值为j的数量 ans[i][ ...
- HDU - 6128
题意略: 题解:二次剩余板子题 //#pragma GCC optimize(2) //#pragma GCC optimize(3) //#pragma GCC optimize(4) //#pra ...