`
pengzhaocheng16
  • 浏览: 181161 次
  • 性别: 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文件监控例子--jnotify

    在Java中,实现文件监控的一种流行库是`jnotify`。`jnotify`是一个轻量级的库,它提供了一个简单的方式来监控文件系统的变化。这个例子将深入探讨如何使用`jnotify`来实现文件监控。 `jnotify`库通过JNI(Java ...

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

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

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

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

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

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

    java开源的文件管理系统

    Java开源文件管理系统是一种基于Java技术构建的用于存储、管理和检索文件的应用程序。它提供了一种高效、安全且灵活的方式来组织和访问大量的数据。在本文中,我们将深入探讨Java开源文件管理系统的相关知识点,包括...

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

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

    java开源私有网盘 kiftd-v1.1.0

    适合家庭、团队或小型组织在局域网&公网中搭建私有云盘实现文件共享。支持Windows/Linux/Mac OS,只需3分钟即可完成部署,同时还支持视频播放/文档预览/音乐播放/文件夹上传/权限管理/WebDAV等高级功能。最新版v...

    IT软件项目开源组件清单(JAVA).zip

    "物联感知平台 - 开源组件清单.xlsx"和"智能视频分析平台 - 开源组件清单.xlsx"两个文件很可能是针对特定项目或平台的详细清单,列出了这些项目所依赖的所有JAVA开源组件及其版本。通过这些清单,项目团队可以清楚地...

    java开源版企业门户网站_功能齐全,带后台

    【标题】:“java开源版企业门户网站_功能齐全,带后台” 这个标题暗示了这是一个基于Java编程语言的开源项目,特别设计用于构建企业级门户网站。开源意味着源代码是公开的,允许用户自由查看、使用、修改和分发。...

    转 Java 开源条码生成组件 Barcode4J

    Java开源条码生成组件Barcode4J是一个强大的工具,它允许开发者在Java应用程序中轻松地生成各种类型的条形码。这个组件是由Krysalis项目开发的,现在已经成为了Apache基金会的一个项目,名为Apache Batik的一部分。...

    Java开源邮件服务器james源码

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

    java开源包9

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

    JavaMelody开源系统性能监控

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

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

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

    Java Swing组件写的游戏客户端.zip

    Java Swing组件写的游戏客户端Java Swing组件写的游戏客户端 Java Swing组件写的游戏客户端Java Swing组件写的游戏客户端 Java Swing组件写的游戏客户端Java Swing组件写的游戏客户端 Java Swing组件写的游戏客户端...

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

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

    基于Java的开源商城JAVA首选商城框架设计源码

    项目包含3885个文件,其中包括1010个Java源文件、886个JavaScript文件、371个Vue文件、299个TypeScript文件、207个CSS样式文件、185个Less样式文件、148个PNG图片、116个XML文件、109个SCSS文件和93个JSON文件。...

    基于Java的开源内容管理系统(CMS)设计源码

    本资源提供了一套基于Java的开源内容管理系统(CMS)的设计源码,包含1282个文件,其中包括363个GIF图片文件,209个Java源代码文件,以及201个JavaScript脚本文件。此外,还包括174个HTML页面文件,141个PNG图片文件...

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

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

    开源的javacard虚拟机实现

    在这个目录下,可能包含了OpenJCVVM的全部源代码文件,如C++或Java语言编写的类库、解释器、编译器等组件。开发者可以通过这些源代码了解整个虚拟机的工作流程,从卡片初始化、类加载、方法执行到内存管理等一系列...

Global site tag (gtag.js) - Google Analytics