クラス FileWatch

java.lang.Object
org.opengion.fukurou.fileexec.FileWatch
すべての実装されたインタフェース:
Runnable

public class FileWatch extends Object implements Runnable
FileWatch は、ファイル監視を行うクラスです。
 ファイルが、追加(作成)、変更、削除された場合に、イベントが発生します。
 このクラスは、Runnable インターフェースを実装しているため、Thread で実行することで、
 個々のフォルダの監視を行います。

変更履歴:
7.0.0.0 (2017/07/07) 新規作成
導入されたバージョン:
JDK1.8,
  • フィールドの概要

    フィールド
    修飾子とタイプ
    フィールド
    説明
    static final WatchEvent.Kind<Path>
    Path に、WatchService を register するときの作成イベントの簡易指定できるように。
    static final WatchEvent.Kind<Path>
    Path に、WatchService を register するときの削除イベントの簡易指定できるように。
    static final String
    DirWatch でスキャンした場合のイベント名 "DirWatch"
    static final WatchEvent.Kind<Path>
    Path に、WatchService を register するときの変更イベントの簡易指定できるように。
    static final WatchEvent.Kind<?>
    Path に、WatchService を register するときの特定不能時イベントの簡易指定できるように。
    static final int
    7.4.4.0 (2021/06/30) stop() してから、実際に止まるまで 待機する回数
    static final int
    7.4.4.0 (2021/06/30) stop() してから、実際に止まるまで 待機する時間 (ms )
  • コンストラクタの概要

    コンストラクタ
    コンストラクタ
    説明
    処理対象のフォルダのパスオブジェクトを指定して、ファイル監視インスタンスを作成します。
    FileWatch(Path dir, boolean useTree)
    処理対象のフォルダのパスオブジェクトと、監視対象方法を指定して、ファイル監視インスタンスを作成します。
  • メソッドの概要

    修飾子とタイプ
    メソッド
    説明
    void
    イベントの種類と、ファイルパスを、引数に取る BiConsumer ダオブジェクトを設定します。
    boolean
    このファイル監視で、最後に処理した結果が、エラーの場合に、true を返します。
    void
    run()
    Runnableインターフェースのrunメソッドです。
    void
    何らかの原因でイベントを掴み損ねた場合の、フォルダスキャンの対象ファイルの拡張子を指定します。
    void
    指定のイベントの種類のみ、監視対象に設定します。
    void
    指定のパスが、指定の文字列と、終端一致(endsWith) したパスのみ、callback されます。
    void
    指定のパスの照合操作で、パターンに一致したパスのみ、callback されます。
    void
    setUseDirWatch(boolean flag)
    何らかの原因でイベントを掴み損ねた場合に、フォルダスキャンするかどうかを指定します。
    void
    フォルダの監視を開始します。
    void
    フォルダの監視を終了します。
    このオブジェクトの文字列表現を返します。

    クラスから継承されたメソッド java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • フィールド詳細

    • CREATE

      public static final WatchEvent.Kind<Path> CREATE
      Path に、WatchService を register するときの作成イベントの簡易指定できるように。
    • MODIFY

      public static final WatchEvent.Kind<Path> MODIFY
      Path に、WatchService を register するときの変更イベントの簡易指定できるように。
    • DELETE

      public static final WatchEvent.Kind<Path> DELETE
      Path に、WatchService を register するときの削除イベントの簡易指定できるように。
    • OVERFLOW

      public static final WatchEvent.Kind<?> OVERFLOW
      Path に、WatchService を register するときの特定不能時イベントの簡易指定できるように。
    • DIR_WATCH_EVENT

      public static final String DIR_WATCH_EVENT
      DirWatch でスキャンした場合のイベント名 "DirWatch"
      関連項目:
    • STOP_WATI_TIME

      public static final int STOP_WATI_TIME
      7.4.4.0 (2021/06/30) stop() してから、実際に止まるまで 待機する時間 (ms )
      関連項目:
    • STOP_WATI_CNT

      public static final int STOP_WATI_CNT
      7.4.4.0 (2021/06/30) stop() してから、実際に止まるまで 待機する回数
      関連項目:
  • コンストラクタの詳細

    • FileWatch

      public FileWatch(Path dir)
      処理対象のフォルダのパスオブジェクトを指定して、ファイル監視インスタンスを作成します。 ここでは、指定のフォルダの内のファイルのみ監視します。 これは、new FileWatch( dir , false ) とまったく同じです。
      パラメータ:
      dir - 処理対象のフォルダオブジェクト
    • FileWatch

      public FileWatch(Path dir, boolean useTree)
      処理対象のフォルダのパスオブジェクトと、監視対象方法を指定して、ファイル監視インスタンスを作成します。 useTree を true に設定すると、指定のフォルダの内のフォルダ階層を、すべて監視対象とします。
      パラメータ:
      dir - 処理対象のフォルダのパスオブジェクト
      useTree - フォルダツリーの階層をさかのぼって監視するかどうか(true:フォルダ階層を下る)
  • メソッドの詳細

    • setEventKinds

      public void setEventKinds(WatchEvent.Kind<?>... kind)
      指定のイベントの種類のみ、監視対象に設定します。 ここで指定したイベントのみ、監視対象になり、callback されます。 第一引数は、イベントの種類(ENTRY_CREATE,ENTRY_MODIFY,ENTRY_DELETE,OVERFLOW)
      パラメータ:
      kind - 監視対象に設定するイベントの種類
      関連項目:
    • setPathMatcher

      public void setPathMatcher(PathMatcher pathMch)
      指定のパスの照合操作で、パターンに一致したパスのみ、callback されます。 ここで指定したパターンの一致を判定し、一致した場合は、callback されます。 指定しない場合は、すべて許可されたことになります。 なお、#setPathEndsWith(String...) と、この設定は同時には行うことは出来ません。 (最後に登録した条件が、適用されます。)
      パラメータ:
      pathMch - パスの照合操作のパターン
      関連項目:
    • setPathEndsWith

      public void setPathEndsWith(String... endKey)
      指定のパスが、指定の文字列と、終端一致(endsWith) したパスのみ、callback されます。 これは、#setPathMatcher(PathMatcher) の簡易指定版です。 指定の終端文字列(一般には拡張子)のうち、ひとつでも一致すれば、true となりcallback されます。 指定しない場合(null)は、すべて許可されたことになります。 終端文字列の判定には、大文字小文字の区別を行いません。 なお、#setPathMatcher(PathMatcher) と、この設定は同時には行うことは出来ません。 (最後に登録した条件が、適用されます。)
      パラメータ:
      endKey - パスの終端一致のパターン
      関連項目:
    • callback

      public void callback(BiConsumer<String,Path> act)
      イベントの種類と、ファイルパスを、引数に取る BiConsumer ダオブジェクトを設定します。 これは、関数型インタフェースなので、ラムダ式またはメソッド参照の代入先として使用できます。 イベントが発生したときの イベントの種類と、そのファイルパスを引数に、accept(String,Path) メソッドが呼ばれます。 第一引数は、イベントの種類(ENTRY_CREATE,ENTRY_MODIFY,ENTRY_DELETE,OVERFLOW) 第二引数は、ファイルパス(監視フォルダで、resolveされた、正式なフルパス)
      パラメータ:
      act - 2つの入力(イベントの種類 とファイルパス) を受け取る関数型インタフェース
      関連項目:
    • setUseDirWatch

      public void setUseDirWatch(boolean flag)
      何らかの原因でイベントを掴み損ねた場合に、フォルダスキャンするかどうかを指定します。 スキャン開始の遅延時間と、スキャン間隔、ファイルのタイムスタンプとの比較時間等は、 DirWatch の初期値をそのまま使用するため、ここでは指定できません。 個別に指定したい場合は、このフラグをfalse にセットして、個別に、DirWatch を作成してください。 このメソッドでは、#setPathEndsWith( String... )や、#setPathMatcher( PathMatcher ) で 指定した条件が、そのまま適用されます。
      パラメータ:
      flag - フォルダスキャンするかどうか(true:する/false:しない)
      関連項目:
    • setDirWatchEndsWith

      public void setDirWatchEndsWith(String... endKey)
      何らかの原因でイベントを掴み損ねた場合の、フォルダスキャンの対象ファイルの拡張子を指定します。 このメソッドを使用する場合は、useDirWatch は、true にセットされます。 スキャン開始の遅延時間と、スキャン間隔、ファイルのタイムスタンプとの比較時間等は、 DirWatch の初期値をそのまま使用するため、ここでは指定できません。 このメソッドでは、DirWatch 対象の終端パターンを独自に指定できますが、FileWatch で で指定した条件も、クリアされるので、含める必要があります。
      パラメータ:
      endKey - パスの終端一致のパターン
      関連項目:
    • isErrorStatus

      public boolean isErrorStatus()
      このファイル監視で、最後に処理した結果が、エラーの場合に、true を返します。 通常は、対象フォルダが見つからない場合や、フォルダスキャン(DirWatch)で エラーが発生した場合に、true にセットされます。 また、stop() メソッドが呼ばれた場合も、true にセットされます。
      戻り値:
      エラー状態(true:エラー,false:正常)
      変更履歴:
      7.2.9.4 (2020/11/20) PMD:volatile boolean の代替え。
    • start

      public void start()
      フォルダの監視を開始します。
      変更履歴:
      7.2.9.4 (2020/11/20) PMD:volatile boolean の代替え。, 7.4.4.0 (2021/06/30) stop() してから、実際に止まるまでの時間、待機します。, 8.1.0.3 (2022/01/21) スレッドに名前を付けておきます。 自身を、Threadに登録して、Thread#start() を実行します。 内部の Thread オブジェクトがなければ、新しく作成します。 すでに、実行中の場合は、何もしません。 条件を変えて、実行したい場合は、stop() メソッドで、一旦スレッドを 停止させてから、再び、#start() メソッドを呼び出してください。
    • stop

      public void stop()
      フォルダの監視を終了します。 自身を登録しているThreadに、割り込みをかけるため、 Thread#interrupt() を実行します。 フォルダ監視は、ファイル変更イベントが発生するまで待機していますが、 interrupt() を実行すると、強制的に中断できます。 内部の Thread オブジェクトは、破棄するため、再び、start() メソッドで 実行再開することが可能です。
      変更履歴:
      7.2.9.4 (2020/11/20) PMD:volatile boolean の代替え。, 7.4.4.0 (2021/06/30) thread の存在有無にかかわらず、running は停止状態にする。
    • run

      public void run()
      Runnableインターフェースのrunメソッドです。 規定のスケジュール時刻が来ると、呼ばれる runメソッドです。
      定義:
      run インタフェース内 Runnable
      変更履歴:
      7.2.5.0 (2020/06/01) LOGGERを使用します。, 7.2.9.4 (2020/11/20) PMD:volatile boolean の代替え。
    • toString

      public String toString()
      このオブジェクトの文字列表現を返します。
      オーバーライド:
      toString クラス内 Object
      戻り値:
      このオブジェクトの文字列表現