业界动态
java开源组件jNotify实现文件监控
2025-01-02 22:10
[url]http://hi.baidu.com/wzwahl36/item/591030c630da7a66f7c95d98[/url]
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 + " ");

}



public void fileModified(int wd, String rootPath, String name) {

textarea.append("文件修改 " + rootPath + " : " + name + " ");

}



public void fileDeleted(int wd, String rootPath, String name) {

textarea.append("删除文件" + rootPath + " : " + name + " ");

}



public void fileCreated(int wd, String rootPath, String name) {

textarea.append("新建文件: " + rootPath + " : " + name + " ");

}

}
    以上就是本篇文章【java开源组件jNotify实现文件监控】的全部内容了,欢迎阅览 ! 文章地址:https://sicmodule.kub2b.com/news/14881.html
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 企库往资讯移动站 https://sicmodule.kub2b.com/mobile/ , 查看更多   
最新文章
发改委:推进户用光伏发展,助力农民拓宽增收新路径
中国产品流通经纪人协会供销合作行业标准《农产品食品供应商信用评价规范》参编单位征集函中国农产品流通经纪人协会供销合作行业
泉州百度爱采购运营介绍
百度爱采购入驻条件有哪些:商家需持有工商行政管理局颁发的营业执照,并且执照在6个月有效期内;厂家商品真实在营且符合国家相
抖音feed是什么 feed广告投放流程
feed是什么?feed流(又称信息流)它是穿插在App内容中的广告,具有原生沉浸式体验,支持多种展现形式。feed可以进行线索收集,
抖音投流怎么投?找到最合适的优化路线,实现精准引流与高效转化!
在如今竞争激烈的市场中,抖音广告已经成为商家吸引流量、增加曝光和转化的重要工具。很多企业都在问:“抖音投流怎么投,才能真
提升脸书播放/浏览量:Facebook Workplace的策略
以下介绍:提升脸书播放/浏览量:Facebook Workplace的策略关于提升脸书播放/浏览量:Facebook Workplace的策略所提到的问题请大
想换07年左右的老车,值得吗?
百车全说别人研究车,而我研究你!问:想买一辆2007年左右,绿色(丨), 3.0。主要是喜欢这种雪茄车身,想留着自己偶尔开一下,家
年度盘点丨西安:2024年度十大交通精细化治理案例
​​2024年,西安公安交警深入践行以人民为中心的发展思想,聚焦群众反映强烈的交通问题,坚持缓堵保畅、全域治理,坚持小切口入
怎样才能很好的提高百度SEO的排名呢
怎样使自己的网站在百度等搜索引擎排名靠前  提高用户体验确保网站加载速度快,移动设备友好,并提供良好的用户互动体验。利用
《人工智能:未来世界的“智慧引擎”》
在当今这个科技飞速发展的时代,人工智能(Artificial Intelligence,简称AI)正以前所未有的速度重塑
未来直播技术的创新与发展方向
随着信息技术的快速发展和移动互联网的广泛普及,直播已经成为当今互联网领域的重要应用之一。从最初的娱乐直播到现在的教育直播