`
pengzhaocheng16
  • 浏览: 180370 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java开源组件jNotify实现文件监控

    博客分类:
  • java
 
阅读更多
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开源组件实现生成验证码

    利用java开源组件及servlet实现生成验证码

    java开源组件源码-文本转语音

    java开源组件tts源码-文本转语音。The FreeTTS package contains a speech synthesis system written entirely in the Java programming language

    基于Java的开源免费舆情监测网络监控系统设计源码

    本资源提供了一套基于Java语言编写的开源免费舆情监测网络监控系统设计源码。该项目包含了3436个JavaScript文件、352个PNG图像文件、274个CSS样式文件、272个SVG图形文件、235个Java源文件、129个HTML文件、61个JPG...

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

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

    基于Java的Phoenix开源监控平台设计源码

    本项目是基于Java的Phoenix开源监控平台设计源码,共有1306个文件,包括815个Java文件、75个GIF图像文件等。Phoenix是一个灵活可配置的监控平台,能够监控应用程序、服务器、Docker、数据库、网络、TCP端口和HTTP...

    Java Tree的几种开源组件

    本文将深入探讨几种开源的Java Tree组件,它们可以帮助开发者高效地处理和展示树状数据。 1. **JTree(Java Swing组件)** JTree是Java Swing库中的一个组件,用于在图形用户界面(GUI)中展示树形数据。它允许...

    java实现文件监控.docx

    本文将详细介绍如何利用Java结合JNotify库来实现文件监控的功能。 #### 二、基础知识介绍 1. **Java Native Interface (JNI)** - JNI 是 Java 平台标准的一部分,它允许 Java 代码和其他语言(如 C 和 C++)编写...

    Java文件同步开源项目Sync

    通过深入理解和使用Java文件同步开源项目Sync,开发者可以构建自己的文件同步解决方案,满足特定业务场景的需求,例如实现自动备份、多服务器之间的数据同步,或是优化现有文件管理系统。无论是个人开发者还是企业,...

    Java调用dll文件开源组件jar包及说明文档

    `JNative-1.3.2`是一个开源组件,专门设计用于帮助Java应用程序调用Windows平台上的DLL(动态链接库)文件,同时也支持Linux平台下的SO(共享对象)文件。下面我们将详细介绍这个组件的使用方法、工作原理及相关知识...

    Java 开源用户管理系统

    【Java 开源用户管理系统】是一个基于Java编程语言开发的用户管理解决方案,旨在提供一个易于学习、可扩展且功能丰富的平台,适用于初学者和有经验的开发者。这个系统的核心目标是帮助用户有效地管理和操作用户数据...

    JAVA开源框架-汇总.doc

    - **概述**:iCarousel 是一个Java开源项目,提供了实现各种滚动效果的Widget组件。 - **主要特性**: - 支持不同类型的滚动效果,如旋转木马、轮播图等。 - 可自定义样式和行为。 - **应用场景**: - 移动应用...

    java开源包9

    BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加...

    Java项目开源源码.docx

    2. **OpenJDK**: OpenJDK是Java Development Kit的开源实现,版本v21.5。它是Java平台的核心组成部分,提供了开发和运行Java应用程序所需的编译器、JVM和类库。 3. **Diboot轻代码开发平台**: Diboot v2.8.0是一个...

    SNMP协议的开源Java实现

    SNMP协议的开源Java实现提供了在Java环境中对SNMP协议的支持,使得开发者能够构建自己的网络管理系统。 SNMP协议主要有三个版本:SNMPv1、SNMPv2c和SNMPv3。SNMPv1是最基础的版本,主要关注设备的读取和写入操作,...

    Java开源邮件服务器james源码

    Java开源邮件服务器Apache James是基于Java技术构建的一款强大的邮件服务器软件。它的源代码开放,允许开发者深入了解其工作原理,并可根据需求进行定制化开发。Apache James 2.3.2是该项目的某个稳定版本,提供了...

    JavaMelody开源系统性能监控

    JavaMelody是一款强大的开源系统性能监控工具,专为Java应用程序设计。它允许开发者和运维人员实时监测应用的运行状态,从而有效地识别并解决性能问题。JavaMelody通过简单的集成方式,提供了一整套全面的监控指标,...

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

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

    管理系统系列--Java开源工单管理系统,集成 Camunda && vue-element-admin.zip

    【标题】中的“管理系统系列--Java开源工单管理系统”揭示了这是一个基于Java开发的系统,主要功能是管理和处理工作流程,而“集成 Camunda && vue-element-admin”表明该系统结合了两个重要的技术组件:...

    java-Push开源实时消息推送系统

    Java-Push开源实时消息推送系统是一种基于Java技术构建的、专为实现高效、稳定、实时的消息推送服务而设计的解决方案。在当今互联网应用中,实时消息推送已经成为提高用户体验和互动性的重要工具,尤其是在社交网络...

    非常好用的java版文件极速搜索工具(可按内容搜索)

    1.对于word excel txt等一些文本类型的文件,支持按内容及标题搜索。 2.开启工具后,实时监控全盘,文件变化立即更新可查 3.搜索速度极快,秒搜。 4.初次使用请先点击索引服务。 5.4分绝对超值

Global site tag (gtag.js) - Google Analytics