java监控文件夹的动态

Posted 茂财

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java监控文件夹的动态相关的知识,希望对你有一定的参考价值。

package com.fenye.puil.usbDemo;


import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardWatchEventKinds;
import java.nio.file.WatchEvent;
import java.nio.file.WatchKey;
import java.nio.file.WatchService;

public class UsbDemo {
public static void main(String[] args) {
//初始化被监控的文件夹
//U盘插入会在此目录上显示所以监控,所以实时监控此文件夹就行
final Path path = Paths.get("D://Usb");
//创建WatchService实例,WatchService类似于观察者模式中的观察者
try (WatchService service = FileSystems.getDefault().newWatchService()) {
//将path注册到WatchService中
path.register(service, StandardWatchEventKinds.ENTRY_CREATE,
StandardWatchEventKinds.ENTRY_MODIFY,
StandardWatchEventKinds.ENTRY_DELETE);
while (true) {
//注册监听服务,获取事件的各个属性
//serviec.take()这个方法会一直堵塞,直到某个事件发生。
WatchKey key = service.take();
for (WatchEvent<?> watchEvent : key.pollEvents()) {
final WatchEvent.Kind<?> kind = watchEvent.kind();
//丢失或放弃事件时被触发
if (kind == StandardWatchEventKinds.OVERFLOW) {
continue;
}
//当新的文件夹或者文件出现时
else if (kind == StandardWatchEventKinds.ENTRY_CREATE) {
//final WatchEvent<Path> watchEventPath = (WatchEvent<Path>) watchEvent;
//final Path filename = watchEventPath.context();
// print it out
System.out.println("U盘 :" + " 已插入");
}
//当有任意文件被修改时
else if (kind == StandardWatchEventKinds.ENTRY_MODIFY) {
System.out.println("========文件被修改========");
}
//当文件夹或者文件消失时
else if (kind == StandardWatchEventKinds.ENTRY_DELETE) {
//final WatchEvent<Path> watchEventPath = (WatchEvent<Path>) watchEvent;
//final Path filename = watchEventPath.context();
// print it out
System.out.println("U盘 :" + " 已拔出");

}
}
//WatchKey实例通过poll或者take返回后,就不会捕获任何事件
//调用reset()方法就可以将这个WatchKey重新回到watchservice队列,可以重新等待新的事件。
boolean valid = key.reset();
if (!valid) {
break;
}
}
} catch (Exception e) {
System.err.println(e);
}
}
}










































































以上是关于java监控文件夹的动态的主要内容,如果未能解决你的问题,请参考以下文章

如何动态监控 Java 堆大小?

Android 逆向Android 逆向方法 ( 静态逆向解析 | 函数调用分析 | 动态运行跟踪 | 运行日志分析 | 文件格式解析 | 敏感信息分析 | 网络信息监控 | 环境伪装模拟 )

nmon +java nmon Alalizy agent 动态交互监控

Java 文件系统监控(WatchService)

基于SSM框架下的JAVA文件监控管理系统

Zabbix 动态执行监控采集脚本的实现原理