文件监控利器(文件监控 工具)

  本篇文章为你整理了文件监控利器(文件监控 工具)的详细内容,包含有文件监控利器是什么 文件监控 工具 文件监控软件 文件监控lcg 文件监控利器,希望能帮助你了解 文件监控利器。

  监听的文件变化的方式有很多,但是比较完美的还是jNotify
 

  https://jnotify.sourceforge.net/
 

  对比一下监控方式的优缺点

  


 !-- https://mvnrepository.com/artifact/net.contentobjects.jnotify/jnotify -- 

 

   dependency

   groupId net.contentobjects.jnotify /groupId

   artifactId jnotify /artifactId

   version 0.94 /version

   /dependency

  

 

  编写监控代码

  

 

 

  import net.contentobjects.jnotify.JNotify;

  import net.contentobjects.jnotify.JNotifyAdapter;

  import net.contentobjects.jnotify.JNotifyException;

  import java.io.File;

  public class Watch extends JNotifyAdapter {

   //可以写到配置文件中

   private static String WATCH_BASE_PATH;

   public Watch(String path){

   Watch.WATCH_BASE_PATH = path;

   * 关注目录的事件

   int mask =JNotify.FILE_CREATED JNotify.FILE_DELETED JNotify.FILE_RENAMED JNotify.FILE_MODIFIED;

   * 是否监视子目录,即级联监视

   boolean watchSubtree = true;

   * 监听程序Id

   public int watchID;

   * 容器启动时启动监视程序

   public void beginWatch() {

   * 添加到监视队列中

   try {

   this.watchID = JNotify.addWatch(WATCH_BASE_PATH, mask, watchSubtree, this);

   System.err.println("jnotify -----------启动成功-----------:" + watchID );

   } catch (JNotifyException e) {

   e.printStackTrace();

   * 死循环,线程一直执行,休眠一分钟后继续执行,主要是为了让主线程一直执行 休眠时间和监测文件发生的效率无

   * (就是说不是监视目录文件改变一分钟后才监测到,监测几乎是实时的,调用本地系统库)

   while (true) {

   try {

   //主要缓和主线程的执行效率,

   Thread.sleep(600);

   } catch (InterruptedException e) {

   // ignore it

   * 文件创建

   * @param wd 监听程序Id 初始为1,多个监控程序以此加1

   * @param rootPath 目录名

   * @param name 文件名

   @Override

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

   System.err.println(wd+"----- 文件被创建, 创建位置为: " + rootPath + "\\" + name);

   * 删除文件

   * @param wd 监听程序Id 初始为1,多个监控程序以此加1

   * @param rootPath 目录名

   * @param name 文件名

   @Override

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

   System.err.println(wd+"----- 文件被删除, 被删除的文件名为:" + rootPath + name);

   * 文件修改 (文件内容被修改和文件夹被修改都可以检测到)

   * @param wd 监听程序Id 初始为1,多个监控程序以此加1

   * @param rootPath 目录名

   * @param name 文件名

   @Override

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

   String filePath = rootPath + name;

   boolean isDir = filePath.indexOf(.)

   // 是目录变更

   if(filePath.indexOf(.) 1){

   return;

   System.err.println(wd+"----- 文件内容被修改, 文件名为:" + rootPath + "\\" + name + ", isdir:" + isDir);

   * 文件重命名

   * @param wd 监听程序Id 初始为1,多个监控程序以此加1

   * @param rootPath 目录名

   * @param oldName 修改前目录名

   * @param newName 修改后目录名

   @Override

   public void fileRenamed(int wd, String rootPath, String oldName, String newName) {

   String filePath = rootPath + oldName;

   // 是目录变更

   if(filePath.indexOf(.) 1){

   System.err.println(wd+"----- 文件夹被重命名, 原文件名为:" + rootPath + "\\" + oldName

   + ", 现文件名为:" + rootPath + "\\" + newName);

   } else {

   System.err.println(wd+"----- 文件被重命名, 原文件名为:" + rootPath + "\\" + oldName

   + ", 现文件名为:" + rootPath + "\\" + newName);

  

 

  查看输出
 

  以上就是文件监控利器(文件监控 工具)的详细内容,想要了解更多 文件监控利器的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: