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
"
);
}
}
}
运行效果:
在D盘新建一个文件和修改文件名操作。
分享到:
相关推荐
java实现文件监控
java实现文件监控小工具 java实现的文件监控小工具,监控文件,新增,修改,删除,重命名。 用于代码审计时监控文件夹内文件的变动,支持Mac,Windows,Linux。 第一次运行时请根据提示在此页面下载对应动态依赖库放...
今天小编就为大家分享一篇关于Java实现实时监控目录下文件变化的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
java实现远程监控
主要介绍了Java实现文件监控器FileMonitor的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
对本地文件实施的简单监控,如不能移动,不能复制和粘贴,复制和粘贴时监控系统剪贴板的。
java实现的一个监控windows文件夹中的文件的增删改等操作,根据不同的需要修改代码,可以做成不同的功能,如文件检索,文件保护,文件自动加密等程序应用
基于java的文件监控程序设计与实现.pdf
实现被监控端硬盘文件的上传、下载;实现对鼠标、键盘的模拟;实现在远程机器上执行任意DOS命令;远程关机、远程重启计算机,方便了用户监视和操作被监控端机器。本系统从系统需求分析、概要设计、详细设计到具体的...
本系统采用Java网络编程和Java图形编程实现。...实现被监控端硬盘文件的上传、下载;实现对鼠标、键盘的模拟;实现在远程机器上执行任意DOS命令;远程关机、远程重启计算机,方便了用户监视和操作被监控端机器。
java写的ftp,下载上传文件,定时监控下载上传,自动解压加压,
基于java的文件监控程序设计与实现
可以简单的监控你的文件不被移动、修改和删除,用java实现,没有使用JNI的方式去调用,所以只是模拟了文件的监控,还有很多的确定..
java 实现的远程监控java 实现的远程监控java 实现的远程监控java 实现的远程监控java 实现的远程监控java 实现的远程监控
5.主控端和被监控端读取和发送数据,分别来实现文件上传和下载。 6.在被监控端实现DOS命令的执行。 2.2.3 系统的关键技术 系统使用的关键技术就是Java网络编程和Java图形编程。用Java网络编程实现主控端和被监控端...
可能需要定时的自动去检测服务器是否存在所需要的文件,如果有就自动通过ftp下载,以上为java实现代码
基于JAVA CS远程监控系统软件的实现(源代码+论文)(共78个子文件),供大家参考学习,目录结构: JSN(77个文件) 基于JAVA CS远程监控系统软件的实现.doc
下面小编就为大家带来一篇java实现文件变化监控的方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
纯java代码实现各种视频转flv格式,支持在线播放。不依赖第三方jar包,转码效率高,速度快。