[英]Monitor file/folders to get change notifications in UNIX
要求是监视多个文件夹和文件以查找UNIX中的任何更改。 我需要能够挂钩我的java代码以进行任何更改,例如create / modify / delete。 任何人都可以建议任何基于Java的框架做同样的事情吗?
如果使用Java 7,则可以使用WatchService API来监视对文件系统的更改。
您是否查看过Java 7的File Notifier服务 ?
java.nio.file包提供了一个名为Watch Service API的文件更改通知API。 此API使您可以使用监视服务注册目录(或多个目录)。 注册时,您告诉服务您感兴趣的事件类型:文件创建,文件删除或文件修改。 当服务检测到感兴趣的事件时,它将被转发到注册的进程。 已注册的进程有一个线程(或一个线程池),专门用于监视它已注册的任何事件。 当一个事件进入时,它会根据需要进行处理。
对于那些不能使用Java 7的人来说, JNotify是一个类似的服务/库。
Java 7引入了WatchService
,它WatchService
已注册的对象以进行更改和事件。
示例 -
Path myDir = Paths.get("D:/test");
try {
WatchService watcher = myDir.getFileSystem().newWatchService();
myDir.register(watcher, StandardWatchEventKind.ENTRY_CREATE,
StandardWatchEventKind.ENTRY_DELETE, StandardWatchEventKind.ENTRY_MODIFY);
WatchKey watckKey = watcher.take();
List<WatchEvent<?>> events = watckKey.pollEvents();
for (WatchEvent event : events) {
if (event.kind() == StandardWatchEventKind.ENTRY_CREATE) {
System.out.println("Created: " + event.context().toString());
}
if (event.kind() == StandardWatchEventKind.ENTRY_DELETE) {
System.out.println("Delete: " + event.context().toString());
}
if (event.kind() == StandardWatchEventKind.ENTRY_MODIFY) {
System.out.println("Modify: " + event.context().toString());
}
}
} catch (Exception e) {
System.out.println("Error: " + e.toString());
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.