`

java实现文件监控

阅读更多
转自http://www.blogjava.net/pengo/archive/2011/01/09/342622.html

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实现文件监控小工具

    java实现文件监控小工具 java实现的文件监控小工具,监控文件,新增,修改,删除,重命名。 用于代码审计时监控文件夹内文件的变动,支持Mac,Windows,Linux。 第一次运行时请根据提示在此页面下载对应动态依赖库放...

    java实现文件监控.docx

    ### Java 实现文件监控 #### 一、引言 在Java开发中,有时我们需要对文件系统中的文件或目录进行实时监控,例如为了响应文件的创建、删除、修改等事件而采取相应的动作。Java本身并不直接支持这样的功能,但是可以...

    Java实现实时监控目录下文件变化的方法

    通过使用Commons-io的monitor下的相关类,可以实现文件监控,例如文件夹的创建、删除和修改,文件的创建、删除和修改等。 知识点2:采用观察者模式来实现文件监控 观察者模式是一种软件设计模式,通过定义对象之间...

    Java实现文件监控器FileMonitor的实例代码

    Java实现文件监控器FileMonitor的实例代码 Java实现文件监控器FileMonitor的实例代码是一种基于Java语言的文件监控机制,能够实时监控文件的变化,包括文件的创建、修改、删除等操作。该机制可以应用于各种文件系统...

    java实现,简单文件监控

    以上就是使用Java实现简单文件监控的基本流程。需要注意的是,由于文件系统级别的监控可能涉及到操作系统级别的交互,所以不同操作系统可能有不同的行为和限制。在实际应用中,应考虑到这些差异,并做好异常处理和...

    文件监控文件监控文件监控文件监控

    为了实现文件监控,开发者可能需要以下步骤: 1. 创建一个`WatchService`实例,通常通过调用`FileSystems.getDefault().newWatchService()`。 2. 使用`WatchKey`注册要监控的目录,注册事件包括ENTRY_CREATE、ENTRY_...

    java实现简单远程监控

    在IT行业中,远程监控是一项重要的技术,...总的来说,Java实现远程监控是一个涉及JMX、RMI以及网络编程的综合过程。通过合理设计和实现,我们可以构建出一个强大且灵活的监控解决方案,有效管理和维护我们的Java应用。

    java文件监控例子

    在Java中实现文件监控,可以利用JNotify库,这是一个强大的文件系统变动通知库,支持Windows、Linux和Mac OS X操作系统。标题中的"java文件监控例子"就是关于如何使用JNotify来实现文件监控的示例。 JNotify库的...

    java实现windows文件系统操作监控

    以上就是实现"java实现windows文件系统操作监控"所需的主要知识点,包括系统钩子、JNI、文件系统API、事件处理、文件操作、加密算法、多线程和异常处理等。在实际开发中,需要根据具体需求进行适当的调整和优化,以...

    JAVA实时屏幕监控

    描述中提到的“博文链接:https://jarg.iteye.com/blog/1504195”,虽然没有提供具体的描述内容,但我们可以推测这可能是一个ITeye上的博客文章,详细讨论了如何使用Java实现屏幕监控的原理和步骤。这个链接可能是...

    Java实现本机屏幕监控+源码

    总结来说,Java实现本机屏幕监控的核心在于使用`java.awt.Robot`类捕获屏幕,结合定时器或线程机制实现定时捕获,以及可能的网络传输技术实现实时展示。通过这些技术,我们可以构建出高效且功能完善的屏幕监控系统。...

    java编写的ftp文件实时监控下载上传

    用java语言编写的ftp小工具,可以按指定时间监控ftp服务器,把服务器指定目录内新产生的文件或者文件夹下载到本地指定文件夹,下载后删除数据。 也可以监控本地文件夹,把文件夹内新产生的文件或者文件夹整体上传到...

    基于java的文件监控程序设计与实现.pdf

    本文介绍的基于Java的文件监控程序,它通过桌面式程序的方式实现,主要监控Windows系统下的文件目录变化,并提供对文件信息的采集和修改操作。 在讨论其设计和实现之前,有必要了解几个核心概念:文件处理、Java...

    Java 文件监控,实时监控文件加载

    本篇文章将深入探讨如何在Java中实现文件监控,并结合提供的资源进行详细解析。 首先,Java标准库提供了`java.nio.file`包中的`WatchService`接口,它是文件系统事件监控的基础。通过注册感兴趣的目录到`...

    基于JAVA网络远程监控系统软件的实现(源码)

    源码中应该包含了这些模块的具体实现,包括但不限于Java类、接口、配置文件以及可能的数据库脚本。通过阅读源码,可以学习到如何使用Java进行网络编程、多线程编程、数据处理和可视化、异常处理等方面的知识。对于想...

    java写的ftp下载上传定时监控

    Java作为多平台支持的编程语言,提供了丰富的库和工具来实现FTP功能,包括下载、上传文件以及定时监控等操作。本篇文章将深入探讨如何使用Java进行FTP文件传输,并涉及自动解压和压缩的功能。 首先,让我们关注Java...

    Sigar Java实现系统监控

    本篇文章将深入探讨如何使用Sigar在Java中进行系统监控,并介绍相关的代码实现和包含的库文件。 首先,要使用Sigar进行Java系统监控,你需要下载Sigar的Java绑定包,这个包通常包含了所有必要的库文件,支持多种...

    src.rar_java监控文件夹_文件监控_监控文件

    在Java中,我们可以利用java.nio.file包下的WatchService接口来实现文件系统的事件监听。这个接口提供了注册文件路径、接收并处理文件事件的能力。通常,我们需要创建一个WatchService实例,然后将需要监控的目录...

    Java实现网络摄像头,视频的变化

    本篇将深入探讨如何利用Java实现网络摄像头的监控,并进行图像变化采集。 首先,我们需要了解Java Media Framework (JMF)。JMF是Java平台上的多媒体处理框架,它允许开发者捕获、播放、处理音频和视频流。在这个...

    毕业设计 基于JAVA CS远程监控系统软件的实现(源代码+论文)

    实现被监控端硬盘文件的上传、下载;实现对鼠标、键盘的模拟;实现在远程机器上执行任意DOS命令;远程关机、远程重启计算机,方便了用户监视和操作被监控端机器。本系统从系统需求分析、概要设计、详细设计到具体的...

Global site tag (gtag.js) - Google Analytics