パッケージ 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)`
  処理対象のﾌｫﾙﾀﾞのﾊﾟｽｵﾌﾞｼﾞｪｸﾄを指定して､ﾌｧｲﾙ監視ｲﾝｽﾀﾝｽを作成します｡ ここでは､指定のﾌｫﾙﾀﾞの内のﾌｧｲﾙのみ監視します｡ これは､new FileWatch( dir , false ) とまったく同じです｡
  `FileWatch(Path dir, boolean useTree)`
  処理対象のﾌｫﾙﾀﾞのﾊﾟｽｵﾌﾞｼﾞｪｸﾄと､監視対象方法を指定して､ﾌｧｲﾙ監視ｲﾝｽﾀﾝｽを作成します｡ useTree を true に設定すると､指定のﾌｫﾙﾀﾞの内のﾌｫﾙﾀﾞ階層を､すべて監視対象とします｡

- ## メソッドの概要

  修飾子とタイプ
  メソッド
  説明
  `void`
  `callback(BiConsumer<String,Path> act)`
  ｲﾍﾞﾝﾄの種類と､ﾌｧｲﾙﾊﾟｽを､引数に取る BiConsumer ﾀﾞｵﾌﾞｼﾞｪｸﾄを設定します｡ これは､関数型ｲﾝﾀﾌｪｰｽなので､ﾗﾑﾀﾞ式またはﾒｿｯﾄﾞ参照の代入先として使用できます｡ ｲﾍﾞﾝﾄが発生したときの ｲﾍﾞﾝﾄの種類と､そのﾌｧｲﾙﾊﾟｽを引数に､accept(String,Path) ﾒｿｯﾄﾞが呼ばれます｡ 第一引数は､ｲﾍﾞﾝﾄの種類(ENTRY_CREATE,ENTRY_MODIFY,ENTRY_DELETE,OVERFLOW) 第二引数は､ﾌｧｲﾙﾊﾟｽ(監視ﾌｫﾙﾀﾞで､resolveされた､正式なﾌﾙﾊﾟｽ)
  `boolean`
  `isErrorStatus()`
  このﾌｧｲﾙ監視で､最後に処理した結果が､ｴﾗｰの場合に､true を返します｡ 通常は､対象ﾌｫﾙﾀﾞが見つからない場合や､ﾌｫﾙﾀﾞｽｷｬﾝ（DirWatch）で ｴﾗｰが発生した場合に､true にｾｯﾄされます｡ また､stop() ﾒｿｯﾄﾞが呼ばれた場合も､true にｾｯﾄされます｡
  `void`
  `run()`
  Runnableｲﾝﾀｰﾌｪｰｽのrunﾒｿｯﾄﾞです｡ 規定のｽｹｼﾞｭｰﾙ時刻が来ると､呼ばれる runﾒｿｯﾄﾞです｡
  `void`
  `setDirWatchEndsWith(String... endKey)`
  何らかの原因でｲﾍﾞﾝﾄを掴み損ねた場合の､ﾌｫﾙﾀﾞｽｷｬﾝの対象ﾌｧｲﾙの拡張子を指定します｡ このﾒｿｯﾄﾞを使用する場合は､useDirWatch は､true にｾｯﾄされます｡ ｽｷｬﾝ開始の遅延時間と､ｽｷｬﾝ間隔､ﾌｧｲﾙのﾀｲﾑｽﾀﾝﾌﾟとの比較時間等は､ DirWatch の初期値をそのまま使用するため､ここでは指定できません｡ このﾒｿｯﾄﾞでは､DirWatch 対象の終端ﾊﾟﾀｰﾝを独自に指定できますが､FileWatch で で指定した条件も､ｸﾘｱされるので､含める必要があります｡
  `void`
  `setEventKinds(WatchEvent.Kind<?>... kind)`
  指定のｲﾍﾞﾝﾄの種類のみ､監視対象に設定します｡ ここで指定したｲﾍﾞﾝﾄのみ､監視対象になり､callback されます｡ 第一引数は､ｲﾍﾞﾝﾄの種類(ENTRY_CREATE,ENTRY_MODIFY,ENTRY_DELETE,OVERFLOW)
  `void`
  `setPathEndsWith(String... endKey)`
  指定のﾊﾟｽが､指定の文字列と､終端一致(endsWith) したﾊﾟｽのみ､callback されます｡ これは､#setPathMatcher(PathMatcher) の簡易指定版です｡ 指定の終端文字列(一般には拡張子)のうち､ひとつでも一致すれば､true となりcallback されます｡ 指定しない場合(null)は､すべて許可されたことになります｡ 終端文字列の判定には､大文字小文字の区別を行いません｡ なお､#setPathMatcher(PathMatcher) と､この設定は同時には行うことは出来ません｡ (最後に登録した条件が､適用されます｡)
  `void`
  `setPathMatcher(PathMatcher pathMch)`
  指定のﾊﾟｽの照合操作で､ﾊﾟﾀｰﾝに一致したﾊﾟｽのみ､callback されます｡ ここで指定したﾊﾟﾀｰﾝの一致を判定し､一致した場合は､callback されます｡ 指定しない場合は､すべて許可されたことになります｡ なお､#setPathEndsWith(String...)
  `void`
  `setUseDirWatch(boolean flag)`
  何らかの原因でｲﾍﾞﾝﾄを掴み損ねた場合に､ﾌｫﾙﾀﾞｽｷｬﾝするかどうかを指定します｡ ｽｷｬﾝ開始の遅延時間と､ｽｷｬﾝ間隔､ﾌｧｲﾙのﾀｲﾑｽﾀﾝﾌﾟとの比較時間等は､ DirWatch の初期値をそのまま使用するため､ここでは指定できません｡ 個別に指定したい場合は､このﾌﾗｸﾞをfalse にｾｯﾄして､個別に､DirWatch を作成してください｡ このﾒｿｯﾄﾞでは､#setPathEndsWith( String... )や､#setPathMatcher( PathMatcher ) で 指定した条件が､そのまま適用されます｡
  `void`
  `start()`
  ﾌｫﾙﾀﾞの監視を開始します｡
  `void`
  `stop()`
  ﾌｫﾙﾀﾞの監視を終了します｡ 自身を登録しているThreadに､割り込みをかけるため､ Thread#interrupt() を実行します｡ ﾌｫﾙﾀﾞ監視は､ﾌｧｲﾙ変更ｲﾍﾞﾝﾄが発生するまで待機していますが､ interrupt() を実行すると､強制的に中断できます｡ 内部の Thread ｵﾌﾞｼﾞｪｸﾄは､破棄するため､再び､start() ﾒｿｯﾄﾞで 実行再開することが可能です｡
  `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`
    戻り値:
      このｵﾌﾞｼﾞｪｸﾄの文字列表現