http://hi.baidu.com/wzwahl36/item/591030c630da7a66f7c95d98
java本身不能直接监听系统的文件操作事件,不过可以先编写C/C++调用操作系统的API监听文件,再通过jni调用的方式实现。限于本人的C /C++水平有限,没有用C/C++实现该接口,而且已有开源组件JNotify实现了这个功能,本文例子使用JNotify。
public class MainFrame extends JFrame {
private JPanel contentPane;
private JTextField textField;
private JTextArea textArea;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MainFrame frame = new MainFrame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public MainFrame() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 543, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel label = new JLabel("监控路径:");
label.setBounds(33, 20, 65, 15);
contentPane.add(label);
textField = new JTextField("D:/");
textField.setBounds(90, 16, 219, 21);
contentPane.add(textField);
textField.setColumns(10);
JButton button = new JButton("开始监控");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
addWatch();
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
button.setBounds(319, 16, 93, 23);
contentPane.add(button);
textArea = new JTextArea();
JScrollPane scrollPane = new JScrollPane(textArea);
scrollPane.setBounds(33, 45, 480, 207);
contentPane.add(scrollPane);
}
public void addWatch() throws Exception {
String path = textField.getText();
int mask = JNotify.FILE_CREATED | JNotify.FILE_DELETED
| JNotify.FILE_MODIFIED | JNotify.FILE_RENAMED;
boolean watchSubtree = true;
//添加文件监听
int watchID = JNotify.addWatch(path, mask, watchSubtree, new Listener());
}
class Listener implements JNotifyListener {
public void fileRenamed(int wd, String rootPath, String oldName,
String newName) {
textArea.append("文件:" + rootPath + " : " + oldName + " 重命名为: "
+ newName + "\n");
}
public void fileModified(int wd, String rootPath, String name) {
textArea.append("文件修改 " + rootPath + " : " + name + "\n");
}
public void fileDeleted(int wd, String rootPath, String name) {
textArea.append("删除文件: " + rootPath + " : " + name + "\n");
}
public void fileCreated(int wd, String rootPath, String name) {
textArea.append("新建文件: " + rootPath + " : " + name + "\n");
}
}
}
分享到:
相关推荐
利用java开源组件及servlet实现生成验证码
java开源组件tts源码-文本转语音。The FreeTTS package contains a speech synthesis system written entirely in the Java programming language
本资源提供了一套基于Java语言编写的开源免费舆情监测网络监控系统设计源码。该项目包含了3436个JavaScript文件、352个PNG图像文件、274个CSS样式文件、272个SVG图形文件、235个Java源文件、129个HTML文件、61个JPG...
通过使用Commons-io的monitor下的相关类,可以实现文件监控,例如文件夹的创建、删除和修改,文件的创建、删除和修改等。 知识点2:采用观察者模式来实现文件监控 观察者模式是一种软件设计模式,通过定义对象之间...
本项目是基于Java的Phoenix开源监控平台设计源码,共有1306个文件,包括815个Java文件、75个GIF图像文件等。Phoenix是一个灵活可配置的监控平台,能够监控应用程序、服务器、Docker、数据库、网络、TCP端口和HTTP...
本文将深入探讨几种开源的Java Tree组件,它们可以帮助开发者高效地处理和展示树状数据。 1. **JTree(Java Swing组件)** JTree是Java Swing库中的一个组件,用于在图形用户界面(GUI)中展示树形数据。它允许...
本文将详细介绍如何利用Java结合JNotify库来实现文件监控的功能。 #### 二、基础知识介绍 1. **Java Native Interface (JNI)** - JNI 是 Java 平台标准的一部分,它允许 Java 代码和其他语言(如 C 和 C++)编写...
通过深入理解和使用Java文件同步开源项目Sync,开发者可以构建自己的文件同步解决方案,满足特定业务场景的需求,例如实现自动备份、多服务器之间的数据同步,或是优化现有文件管理系统。无论是个人开发者还是企业,...
`JNative-1.3.2`是一个开源组件,专门设计用于帮助Java应用程序调用Windows平台上的DLL(动态链接库)文件,同时也支持Linux平台下的SO(共享对象)文件。下面我们将详细介绍这个组件的使用方法、工作原理及相关知识...
【Java 开源用户管理系统】是一个基于Java编程语言开发的用户管理解决方案,旨在提供一个易于学习、可扩展且功能丰富的平台,适用于初学者和有经验的开发者。这个系统的核心目标是帮助用户有效地管理和操作用户数据...
- **概述**:iCarousel 是一个Java开源项目,提供了实现各种滚动效果的Widget组件。 - **主要特性**: - 支持不同类型的滚动效果,如旋转木马、轮播图等。 - 可自定义样式和行为。 - **应用场景**: - 移动应用...
BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...
2. **OpenJDK**: OpenJDK是Java Development Kit的开源实现,版本v21.5。它是Java平台的核心组成部分,提供了开发和运行Java应用程序所需的编译器、JVM和类库。 3. **Diboot轻代码开发平台**: Diboot v2.8.0是一个...
SNMP协议的开源Java实现提供了在Java环境中对SNMP协议的支持,使得开发者能够构建自己的网络管理系统。 SNMP协议主要有三个版本:SNMPv1、SNMPv2c和SNMPv3。SNMPv1是最基础的版本,主要关注设备的读取和写入操作,...
Java开源邮件服务器Apache James是基于Java技术构建的一款强大的邮件服务器软件。它的源代码开放,允许开发者深入了解其工作原理,并可根据需求进行定制化开发。Apache James 2.3.2是该项目的某个稳定版本,提供了...
JavaMelody是一款强大的开源系统性能监控工具,专为Java应用程序设计。它允许开发者和运维人员实时监测应用的运行状态,从而有效地识别并解决性能问题。JavaMelody通过简单的集成方式,提供了一整套全面的监控指标,...
源码中应该包含了这些模块的具体实现,包括但不限于Java类、接口、配置文件以及可能的数据库脚本。通过阅读源码,可以学习到如何使用Java进行网络编程、多线程编程、数据处理和可视化、异常处理等方面的知识。对于想...
【标题】中的“管理系统系列--Java开源工单管理系统”揭示了这是一个基于Java开发的系统,主要功能是管理和处理工作流程,而“集成 Camunda && vue-element-admin”表明该系统结合了两个重要的技术组件:...
Java-Push开源实时消息推送系统是一种基于Java技术构建的、专为实现高效、稳定、实时的消息推送服务而设计的解决方案。在当今互联网应用中,实时消息推送已经成为提高用户体验和互动性的重要工具,尤其是在社交网络...
1.对于word excel txt等一些文本类型的文件,支持按内容及标题搜索。 2.开启工具后,实时监控全盘,文件变化立即更新可查 3.搜索速度极快,秒搜。 4.初次使用请先点击索引服务。 5.4分绝对超值