Class WatchMonitor

All Implemented Interfaces:
Closeable, Serializable, AutoCloseable, Runnable

public class WatchMonitor extends WatchServer
路径监听器 监听器可监听目录或文件 如果监听的Path不存在,则递归创建空目录然后监听此空目录 递归监听目录时,并不会监听新创建的目录
Since:
Java 17+
Author:
Kimi Liu
See Also:
  • Field Details

    • OVERFLOW

      public static final WatchEvent.Kind<?> OVERFLOW
      事件丢失
    • ENTRY_MODIFY

      public static final WatchEvent.Kind<?> ENTRY_MODIFY
      修改事件
    • ENTRY_CREATE

      public static final WatchEvent.Kind<?> ENTRY_CREATE
      创建事件
    • ENTRY_DELETE

      public static final WatchEvent.Kind<?> ENTRY_DELETE
      删除事件
    • EVENTS_ALL

      public static final WatchEvent.Kind<?>[] EVENTS_ALL
      全部事件
  • Constructor Details

    • WatchMonitor

      public WatchMonitor(File file, WatchEvent.Kind<?>... events)
      构造
      Parameters:
      file - 文件
      events - 监听的事件列表
    • WatchMonitor

      public WatchMonitor(String path, WatchEvent.Kind<?>... events)
      构造
      Parameters:
      path - 字符串路径
      events - 监听的事件列表
    • WatchMonitor

      public WatchMonitor(Path path, WatchEvent.Kind<?>... events)
      构造
      Parameters:
      path - 字符串路径
      events - 监听事件列表
    • WatchMonitor

      public WatchMonitor(Path path, int maxDepth, WatchEvent.Kind<?>... events)
      构造 例如设置:
       maxDepth <= 1 表示只监听当前目录
       maxDepth = 2 表示监听当前目录以及下层目录
       maxDepth = 3 表示监听当前目录以及下两层
       
      Parameters:
      path - 字符串路径
      maxDepth - 递归目录的最大深度,当小于2时不递归下层目录
      events - 监听事件列表
  • Method Details

    • create

      public static WatchMonitor create(URL url, WatchEvent.Kind<?>... events)
      创建并初始化监听
      Parameters:
      url - URL
      events - 监听的事件列表
      Returns:
      监听对象
    • create

      public static WatchMonitor create(URL url, int maxDepth, WatchEvent.Kind<?>... events)
      创建并初始化监听
      Parameters:
      url - URL
      events - 监听的事件列表
      maxDepth - 当监听目录时,监听目录的最大深度,当设置值为1(或小于1)时,表示不递归监听子目录
      Returns:
      监听对象
    • create

      public static WatchMonitor create(URI uri, WatchEvent.Kind<?>... events)
      创建并初始化监听
      Parameters:
      uri - URI
      events - 监听的事件列表
      Returns:
      监听对象
    • create

      public static WatchMonitor create(URI uri, int maxDepth, WatchEvent.Kind<?>... events)
      创建并初始化监听
      Parameters:
      uri - URI
      events - 监听的事件列表
      maxDepth - 当监听目录时,监听目录的最大深度,当设置值为1(或小于1)时,表示不递归监听子目录
      Returns:
      监听对象
    • create

      public static WatchMonitor create(File file, WatchEvent.Kind<?>... events)
      创建并初始化监听
      Parameters:
      file - 文件
      events - 监听的事件列表
      Returns:
      监听对象
    • create

      public static WatchMonitor create(File file, int maxDepth, WatchEvent.Kind<?>... events)
      创建并初始化监听
      Parameters:
      file - 文件
      events - 监听的事件列表
      maxDepth - 当监听目录时,监听目录的最大深度,当设置值为1(或小于1)时,表示不递归监听子目录
      Returns:
      监听对象
    • create

      public static WatchMonitor create(String path, WatchEvent.Kind<?>... events)
      创建并初始化监听
      Parameters:
      path - 路径
      events - 监听的事件列表
      Returns:
      监听对象
    • create

      public static WatchMonitor create(String path, int maxDepth, WatchEvent.Kind<?>... events)
      创建并初始化监听
      Parameters:
      path - 路径
      events - 监听的事件列表
      maxDepth - 当监听目录时,监听目录的最大深度,当设置值为1(或小于1)时,表示不递归监听子目录
      Returns:
      监听对象
    • create

      public static WatchMonitor create(Path path, WatchEvent.Kind<?>... events)
      创建并初始化监听
      Parameters:
      path - 路径
      events - 监听事件列表
      Returns:
      监听对象
    • create

      public static WatchMonitor create(Path path, int maxDepth, WatchEvent.Kind<?>... events)
      创建并初始化监听
      Parameters:
      path - 路径
      events - 监听事件列表
      maxDepth - 当监听目录时,监听目录的最大深度,当设置值为1(或小于1)时,表示不递归监听子目录
      Returns:
      监听对象
    • createAll

      public static WatchMonitor createAll(URI uri, Watcher watcher)
      创建并初始化监听,监听所有事件
      Parameters:
      uri - URI
      watcher - Watcher
      Returns:
      WatchMonitor
    • createAll

      public static WatchMonitor createAll(URL url, Watcher watcher)
      创建并初始化监听,监听所有事件
      Parameters:
      url - URL
      watcher - Watcher
      Returns:
      WatchMonitor
    • createAll

      public static WatchMonitor createAll(File file, Watcher watcher)
      创建并初始化监听,监听所有事件
      Parameters:
      file - 被监听文件
      watcher - Watcher
      Returns:
      WatchMonitor
    • createAll

      public static WatchMonitor createAll(String path, Watcher watcher)
      创建并初始化监听,监听所有事件
      Parameters:
      path - 路径
      watcher - Watcher
      Returns:
      WatchMonitor
    • createAll

      public static WatchMonitor createAll(Path path, Watcher watcher)
      创建并初始化监听,监听所有事件
      Parameters:
      path - 路径
      watcher - Watcher
      Returns:
      WatchMonitor
    • init

      public void init() throws InstrumentException
      初始化 初始化包括:
       1、解析传入的路径,判断其为目录还是文件
       2、创建WatchService 对象
       
      Overrides:
      init in class WatchServer
      Throws:
      InstrumentException - 监听异常,IO异常时抛出此异常
    • setWatcher

      public WatchMonitor setWatcher(Watcher watcher)
      设置监听 多个监听请使用WatcherChain
      Parameters:
      watcher - 监听
      Returns:
      WatchMonitor
    • run

      public void run()
      Specified by:
      run in interface Runnable
      Overrides:
      run in class Thread
    • watch

      public void watch()
      开始监听事件,阻塞当前进程
    • watch

      public void watch(Watcher watcher) throws InstrumentException
      开始监听事件,阻塞当前进程
      Parameters:
      watcher - 监听
      Throws:
      InstrumentException - 监听异常,如果监听关闭抛出此异常
    • setMaxDepth

      public WatchMonitor setMaxDepth(int maxDepth)
      当监听目录时,监听目录的最大深度 当设置值为1(或小于1)时,表示不递归监听子目录 例如设置:
       maxDepth <= 1 表示只监听当前目录
       maxDepth = 2 表示监听当前目录以及下层目录
       maxDepth = 3 表示监听当前目录以及下层
       
      Parameters:
      maxDepth - 最大深度,当设置值为1(或小于1)时,表示不递归监听子目录,监听所有子目录请传Integer.MAX_VALUE
      Returns:
      this