Java监控文件变化

NIO.2的Path类提供了如下的一个方法来监听文件系统的变化。

register(WatcherService watcher,WatchEvent.Kind<?>... events):用watcher监听该path代表的目录下文件变化。event参数指定要监听哪些类型的事件。

WatchService有三个方法来监听目录的文件变化事件。

WatchKey poll():获取下一个WatchKey,如果没有WatchKey发生就立即返回null;

WatcheKey poll(long timeout,TimeUnit unit):尝试等待timeout时间去获取下一个WatchKey;

WatchKey  take():获取下一个WatchKey,如果没有发生就一直等待;

如果程序需要一直监控,则应该选择使用take()方法,如果程序只需要监控指定时间,则使用poll方法。

  1. import java.nio.file.FileSystems;
  2. import java.nio.file.Paths;
  3. import java.nio.file.StandardWatchEventKinds;
  4. import java.nio.file.WatchEvent;
  5. import java.nio.file.WatchKey;
  6. import java.nio.file.WatchService;
  7. public class Test {
  8. public static void main(String[] args) throws Exception
  9. {
  10. WatchService watchService=FileSystems.getDefault().newWatchService();
  11. Paths.get("C:/").register(watchService,
  12. StandardWatchEventKinds.ENTRY_CREATE,
  13. StandardWatchEventKinds.ENTRY_DELETE,
  14. StandardWatchEventKinds.ENTRY_MODIFY);
  15. while(true)
  16. {
  17. WatchKey key=watchService.take();
  18. for(WatchEvent<?> event:key.pollEvents())
  19. {
  20. System.out.println(event.context()+"发生了"+event.kind()+"事件");
  21. }
  22. if(!key.reset())
  23. {
  24. break;
  25. }
  26. }
  27. }
  28. }

版权声明:本文为博主http://www.zuiniusn.com原创文章,未经博主允许不得转载。

时间: 2024-10-24 09:41:23

Java监控文件变化的相关文章

php 监控文件变化 并上传到服务器

最近有个思路.想要监控本地文件变化 并上传到指定服务器. 刚开始有这个想法的时候找了很多资料.关于 windows 和linux 上怎么监控文件变化的 最后选择了 比较MD5值的方法. 我也写了一段 但是也大同小异. 于是 其中借用了别人的代码 他的github 是 https://github.com/tansuo1989/mydemo/blob/master/php-demo/file_watch.php 话不多说 上代码 <?php /** * Created by PhpStorm. *

利用nodejs监控文件变化并使用sftp上传到服务器

很久没写博客了,因为最近在用react+express做一个自己的工具型网站(其实就是夺宝岛抢拍器) 然后因为经常要改动,而且又要放到服务器上进行测试.总是要webpack,然后手动把文件上传上去,不胜其烦,索性搜索了下,直接写个能检测文件变化并自动进行上传的脚本好了. 首先,我们使用npm 安装两个别人封装好的模块. npm install ssh2-sftp-client npm install gaze 第一个模块的作用是sftp上传文件, 第二个模块的作用就是监听文件变化了.当然,你也可

java监控文件运行状态

package com.rmi.clent;import java.io.FileNotFoundException;import java.io.IOException;import java.io.RandomAccessFile;import java.nio.channels.FileChannel;import java.nio.channels.FileLock;import java.util.concurrent.Callable;import java.util.concurr

inotify监控文件变化

1.安装inotify-tools yum install make  gcc gcc-c++  #安装编译工具 inotify-tools下载地址:http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz 上传inotify-tools-3.14.tar.gz到/usr/local/src目录下 cd /usr/local/src tar zxvf inotify-tools-3.14.tar.g

Linux监控文件变化及主动上报实现

一.说明 最近在做一些主机的自动化检查操作,每次都是定时主动去扫描.这种方式一是实时性不佳,二是扫描时会陡然给中心机很大的压力.后来想有没有一种主机上的配置如果发生变动就能主动上报的机制,如果能主动上报一又解决了实时性问题,二也解决了中心机压力的问题. 二.Shell脚本实现 2.1 基本使用 安装: yum install inotify-tools 使用格式: # 使用格式 inotifywait [-hcmrq] [-e <event> ] [-t <seconds> ] [

java利用WatchService实时监控某个目录下的文件变化并按行解析(注:附源代码)

首先说下需求:通过ftp上传约定格式的文件到服务器指定目录下,应用程序能实时监控该目录下文件变化,如果上传的文件格式符合要求,将将按照每一行读取解析再写入到数据库,解析完之后再将文件改名. 一. 一开始的思路 设置一个定时任务,每隔一分钟读取下指定目录下的文件变化,如果有满足格式的文件,就进行解析. 这种方式很繁琐,而且效率低,效率都消耗在了遍历.保存状态.对比状态上了! 而且无法利用OS的很多功能. 二. WatchService介绍 1. 该类的对象就是操作系统原生的文件系统监控器!我们都知

[转帖]监控Linux文件变化,防止系统被黑

监控Linux文件变化,防止系统被黑 https://os.51cto.com/art/201912/608702.htm改天尝试一下 inotify 运维服务器比较头疼的一个问题是系统被黑,沦为肉鸡或者矿机.除了加强安全基线配置,加强网络和端口加固,系统和应用bug修复,上IDS/IPS(入侵检测/防御系统)之外,另一个方面就是系统监控,一个完善准确的安全监控可以在主机层面及时发现入侵活动.予以告警以备及时处理. 作者:虫虫安全来源:今日头条|2019-12-31 14:00 收藏 分享 运维

Java 文件变化加载监控,实时监控文件加载之Commons-io

Java 文件监控,实时监控文件加载 ,Commons-io中已有此功能的实现,如下代码所示: package wy.util.filemonitor; import java.io.File; import org.apache.commons.io.monitor.FileAlterationListenerAdaptor; import org.apache.commons.io.monitor.FileAlterationObserver; import org.apache.log4j

Storm监控文件夹变化 统计文件单词数量

监控指定文件夹,读取文件(新文件动态读取)里的内容,统计单词的数量. FileSpout.java,监控文件夹,读取新文件内容 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65