本篇文章为你整理了文件监控利器(文件监控 工具)的详细内容,包含有文件监控利器是什么 文件监控 工具 文件监控软件 文件监控lcg 文件监控利器,希望能帮助你了解 文件监控利器。
监听的文件变化的方式有很多,但是比较完美的还是jNotify
https://jnotify.sourceforge.net/
对比一下监控方式的优缺点
!-- https://mvnrepository.com/artifact/net.contentobjects.jnotify/jnotify --
dependency
groupId net.contentobjects.jnotify /groupId
artifactId jnotify /artifactId
version 0.94 /version
/dependency
编写监控代码
import net.contentobjects.jnotify.JNotify;
import net.contentobjects.jnotify.JNotifyAdapter;
import net.contentobjects.jnotify.JNotifyException;
import java.io.File;
public class Watch extends JNotifyAdapter {
//可以写到配置文件中
private static String WATCH_BASE_PATH;
public Watch(String path){
Watch.WATCH_BASE_PATH = path;
* 关注目录的事件
int mask =JNotify.FILE_CREATED JNotify.FILE_DELETED JNotify.FILE_RENAMED JNotify.FILE_MODIFIED;
* 是否监视子目录,即级联监视
boolean watchSubtree = true;
* 监听程序Id
public int watchID;
* 容器启动时启动监视程序
public void beginWatch() {
* 添加到监视队列中
try {
this.watchID = JNotify.addWatch(WATCH_BASE_PATH, mask, watchSubtree, this);
System.err.println("jnotify -----------启动成功-----------:" + watchID );
} catch (JNotifyException e) {
e.printStackTrace();
* 死循环,线程一直执行,休眠一分钟后继续执行,主要是为了让主线程一直执行 休眠时间和监测文件发生的效率无
* (就是说不是监视目录文件改变一分钟后才监测到,监测几乎是实时的,调用本地系统库)
while (true) {
try {
//主要缓和主线程的执行效率,
Thread.sleep(600);
} catch (InterruptedException e) {
// ignore it
* 文件创建
* @param wd 监听程序Id 初始为1,多个监控程序以此加1
* @param rootPath 目录名
* @param name 文件名
@Override
public void fileCreated(int wd, String rootPath, String name) {
System.err.println(wd+"----- 文件被创建, 创建位置为: " + rootPath + "\\" + name);
* 删除文件
* @param wd 监听程序Id 初始为1,多个监控程序以此加1
* @param rootPath 目录名
* @param name 文件名
@Override
public void fileDeleted(int wd, String rootPath, String name) {
System.err.println(wd+"----- 文件被删除, 被删除的文件名为:" + rootPath + name);
* 文件修改 (文件内容被修改和文件夹被修改都可以检测到)
* @param wd 监听程序Id 初始为1,多个监控程序以此加1
* @param rootPath 目录名
* @param name 文件名
@Override
public void fileModified(int wd, String rootPath, String name) {
String filePath = rootPath + name;
boolean isDir = filePath.indexOf(.)
// 是目录变更
if(filePath.indexOf(.) 1){
return;
System.err.println(wd+"----- 文件内容被修改, 文件名为:" + rootPath + "\\" + name + ", isdir:" + isDir);
* 文件重命名
* @param wd 监听程序Id 初始为1,多个监控程序以此加1
* @param rootPath 目录名
* @param oldName 修改前目录名
* @param newName 修改后目录名
@Override
public void fileRenamed(int wd, String rootPath, String oldName, String newName) {
String filePath = rootPath + oldName;
// 是目录变更
if(filePath.indexOf(.) 1){
System.err.println(wd+"----- 文件夹被重命名, 原文件名为:" + rootPath + "\\" + oldName
+ ", 现文件名为:" + rootPath + "\\" + newName);
} else {
System.err.println(wd+"----- 文件被重命名, 原文件名为:" + rootPath + "\\" + oldName
+ ", 现文件名为:" + rootPath + "\\" + newName);
查看输出
以上就是文件监控利器(文件监控 工具)的详细内容,想要了解更多 文件监控利器的内容,请持续关注盛行IT软件开发工作室。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。