パッケージ org.opengion.fukurou.fileexec

# クラス 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>`
  `CREATE`
  Path に、WatchService を register するときの作成ｲﾍﾞﾝﾄの簡易指定できるように。
  `static final WatchEvent.Kind<Path>`
  `DELETE`
  Path に、WatchService を register するときの削除ｲﾍﾞﾝﾄの簡易指定できるように。
  `static final String`
  `DIR_WATCH_EVENT`
  DirWatch でｽｷｬﾝした場合のｲﾍﾞﾝﾄ名 "DirWatch"
  `static final WatchEvent.Kind<Path>`
  `MODIFY`
  Path に、WatchService を register するときの変更ｲﾍﾞﾝﾄの簡易指定できるように。
  `static final WatchEvent.Kind<?>`
  `OVERFLOW`
  Path に、WatchService を register するときの特定不能時ｲﾍﾞﾝﾄの簡易指定できるように。
  `static final int`
  `STOP_WATI_CNT`
  7.4.4.0 (2021/06/30) stop() してから、実際に止まるまで 待機する回数
  `static final int`
  `STOP_WATI_TIME`
  7.4.4.0 (2021/06/30) stop() してから、実際に止まるまで 待機する時間 (ms )

- ## コンストラクタの概要

  コンストラクタ
  コンストラクタ
  説明
  `FileWatch(Path dir)`
  処理対象のﾌｫﾙﾀﾞのﾊﾟｽｵﾌﾞｼﾞｪｸﾄを指定して、ﾌｧｲﾙ監視ｲﾝｽﾀﾝｽを作成します。
  `FileWatch(Path dir, boolean useTree)`
  処理対象のﾌｫﾙﾀﾞのﾊﾟｽｵﾌﾞｼﾞｪｸﾄと、監視対象方法を指定して、ﾌｧｲﾙ監視ｲﾝｽﾀﾝｽを作成します。

- ## メソッドの概要

  修飾子とタイプ
  メソッド
  説明
  `void`
  `callback(BiConsumer<String,Path> act)`
  ｲﾍﾞﾝﾄの種類と、ﾌｧｲﾙﾊﾟｽを、引数に取る BiConsumer ﾀﾞｵﾌﾞｼﾞｪｸﾄを設定します。
  `boolean`
  `isErrorStatus()`
  このﾌｧｲﾙ監視で、最後に処理した結果が、ｴﾗｰの場合に、true を返します。
  `void`
  `run()`
  Runnableｲﾝﾀｰﾌｪｰｽのrunﾒｿｯﾄﾞです。
  `void`
  `setDirWatchEndsWith(String... endKey)`
  何らかの原因でｲﾍﾞﾝﾄを掴み損ねた場合の、ﾌｫﾙﾀﾞｽｷｬﾝの対象ﾌｧｲﾙの拡張子を指定します。
  `void`
  `setEventKinds(WatchEvent.Kind<?>... kind)`
  指定のｲﾍﾞﾝﾄの種類のみ、監視対象に設定します。
  `void`
  `setPathEndsWith(String... endKey)`
  指定のﾊﾟｽが、指定の文字列と、終端一致(endsWith) したﾊﾟｽのみ、callback されます。
  `void`
  `setPathMatcher(PathMatcher pathMch)`
  指定のﾊﾟｽの照合操作で、ﾊﾟﾀｰﾝに一致したﾊﾟｽのみ、callback されます。
  `void`
  `setUseDirWatch(boolean flag)`
  何らかの原因でｲﾍﾞﾝﾄを掴み損ねた場合に、ﾌｫﾙﾀﾞｽｷｬﾝするかどうかを指定します。
  `void`
  `start()`
  ﾌｫﾙﾀﾞの監視を開始します。
  `void`
  `stop()`
  ﾌｫﾙﾀﾞの監視を終了します。
  `String`
  `toString()`
  このｵﾌﾞｼﾞｪｸﾄの文字列表現を返します。

  ### クラスから継承されたメソッド 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` - 監視対象に設定するｲﾍﾞﾝﾄの種類
    関連項目:
      - `StandardWatchEventKinds`

  - ### setPathMatcher

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

  - ### setPathEndsWith

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

  - ### callback

    public void callback(BiConsumer<String,Path> act)
    ｲﾍﾞﾝﾄの種類と、ﾌｧｲﾙﾊﾟｽを、引数に取る BiConsumer ﾀﾞｵﾌﾞｼﾞｪｸﾄを設定します。 これは、関数型ｲﾝﾀﾌｪｰｽなので、ﾗﾑﾀﾞ式またはﾒｿｯﾄﾞ参照の代入先として使用できます。 ｲﾍﾞﾝﾄが発生したときの ｲﾍﾞﾝﾄの種類と、そのﾌｧｲﾙﾊﾟｽを引数に、accept(String,Path) ﾒｿｯﾄﾞが呼ばれます。 第一引数は、ｲﾍﾞﾝﾄの種類(ENTRY_CREATE,ENTRY_MODIFY,ENTRY_DELETE,OVERFLOW) 第二引数は、ﾌｧｲﾙﾊﾟｽ(監視ﾌｫﾙﾀﾞで、resolveされた、正式なﾌﾙﾊﾟｽ)
    パラメータ:
      `act` - 2つの入力(ｲﾍﾞﾝﾄの種類 とﾌｧｲﾙﾊﾟｽ) を受け取る関数型ｲﾝﾀﾌｪｰｽ
    関連項目:
      - `BiConsumer.accept(Object,Object)`

  - ### setUseDirWatch

    public void setUseDirWatch(boolean flag)
    何らかの原因でｲﾍﾞﾝﾄを掴み損ねた場合に、ﾌｫﾙﾀﾞｽｷｬﾝするかどうかを指定します。 ｽｷｬﾝ開始の遅延時間と、ｽｷｬﾝ間隔、ﾌｧｲﾙのﾀｲﾑｽﾀﾝﾌﾟとの比較時間等は、 DirWatch の初期値をそのまま使用するため、ここでは指定できません。 個別に指定したい場合は、このﾌﾗｸﾞをfalse にｾｯﾄして、個別に、DirWatch を作成してください。 このﾒｿｯﾄﾞでは、#setPathEndsWith( String... )や、#setPathMatcher( PathMatcher ) で 指定した条件が、そのまま適用されます。
    パラメータ:
      `flag` - ﾌｫﾙﾀﾞｽｷｬﾝするかどうか(true:する/false:しない)
    関連項目:
      - `DirWatch`

  - ### setDirWatchEndsWith

    public void setDirWatchEndsWith(String... endKey)
    何らかの原因でｲﾍﾞﾝﾄを掴み損ねた場合の、ﾌｫﾙﾀﾞｽｷｬﾝの対象ﾌｧｲﾙの拡張子を指定します。 このﾒｿｯﾄﾞを使用する場合は、useDirWatch は、true にｾｯﾄされます。 ｽｷｬﾝ開始の遅延時間と、ｽｷｬﾝ間隔、ﾌｧｲﾙのﾀｲﾑｽﾀﾝﾌﾟとの比較時間等は、 DirWatch の初期値をそのまま使用するため、ここでは指定できません。 このﾒｿｯﾄﾞでは、DirWatch 対象の終端ﾊﾟﾀｰﾝを独自に指定できますが、FileWatch で で指定した条件も、ｸﾘｱされるので、含める必要があります。
    パラメータ:
      `endKey` - ﾊﾟｽの終端一致のﾊﾟﾀｰﾝ
    関連項目:
      - `DirWatch`

  - ### 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`
    戻り値:
      このｵﾌﾞｼﾞｪｸﾄの文字列表現