Class WatchMonitor

java.lang.Object
java.lang.Thread
org.miaixz.bus.core.io.watch.WatchMonitor
All Implemented Interfaces:
Closeable, Serializable, AutoCloseable, Runnable

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

    • WatchMonitor

      public WatchMonitor(Path dir, WatchEvent.Kind<?>... events)
      构造
      Parameters:
      dir - 字符串路径
      events - 监听事件列表,如创建、修改和删除等
    • WatchMonitor

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

    • 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 InternalException
      开始监听事件,阻塞当前进程
      Parameters:
      watcher - 监听
      Throws:
      InternalException - 监听异常,如果监听关闭抛出此异常
    • setMaxDepth

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

      public void close()
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable