クラス DirWatch

  • すべての実装されたインタフェース:
    java.lang.Runnable

    public class DirWatch
    extends java.lang.Object
    implements java.lang.Runnable
    フォルダに残っているファイルを再実行するためのプログラムです。 通常は、FileWatch で、パスを監視していますが、場合によっては、 イベントを拾いそこねることがあります。それを、フォルダスキャンして、拾い上げます。 10秒間隔で繰り返しスキャンします。条件は、30秒以上前のファイルです。
    変更履歴:
    7.0.0.0 (2017/07/07) 新規作成
    バージョン
    7.0
    作成者
    Kazuhiko Hasegawa
    導入されたバージョン:
    JDK1.8,
    • フィールドの概要

      フィールド 
      修飾子とタイプ フィールド 説明
      static long INIT_DELAY
      最初にスキャンを実行するまでの遅延時間(秒) の初期値
      static long PERIOD
      スキャンする間隔(秒) の初期値
      static long TIME_DIFF
      ファイルのタイムスタンプとの差のチェック(秒) の初期値
    • コンストラクタの概要

      コンストラクタ 
      コンストラクタ 説明
      DirWatch​(java.nio.file.Path sPath)
      スキャンパスを引数に作成される、コンストラクタです。
      DirWatch​(java.nio.file.Path sPath, boolean useTree)
      スキャンパスと関数型インターフェースフォルダを引数に作成される、コンストラクタです。
    • メソッドの概要

      すべてのメソッド インスタンス・メソッド concreteメソッド 
      修飾子とタイプ メソッド 説明
      void callback​(java.util.function.Consumer<java.nio.file.Path> act)
      ファイルパスを、引数に取る Consumer ダオブジェクトを設定します。
      boolean isErrorStatus()
      このフォルダスキャンで、最後に処理した結果が、エラーの場合に、true を返します。
      void run()
      Runnableインターフェースのrunメソッドです。
      boolean setAdd​(java.nio.file.Path path)
      スキャンファイルの重複チェック用SetにPathを追加します。
      void setClear()
      スキャンファイルの重複チェック用Setをクリアします。
      void setPathEndsWith​(java.lang.String... endKey)
      指定のパスが、指定の文字列と、終端一致(endsWith) したパスのみ、callback されます。
      void setPathMatcher​(java.nio.file.PathMatcher pathMch)
      指定のパスの照合操作で、パターンに一致したパスのみ、callback されます。
      void start()
      内部でScheduledExecutorServiceを作成して、ScheduledFuture に、自身をスケジュールします。
      void start​(long initDelay, long period, long timeDiff)
      内部でScheduledExecutorServiceを作成して、ScheduledFuture に、自身をスケジュールします。
      void stop()
      内部で作成した ScheduledFutureをキャンセルします。
      java.lang.String toString()
      このオブジェクトの文字列表現を返します。
      • クラスから継承されたメソッド java.lang.Object

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

      • INIT_DELAY

        public static final long INIT_DELAY
        最初にスキャンを実行するまでの遅延時間(秒) の初期値
        関連項目:
        定数フィールド値
      • PERIOD

        public static final long PERIOD
        スキャンする間隔(秒) の初期値
        関連項目:
        定数フィールド値
      • TIME_DIFF

        public static final long TIME_DIFF
        ファイルのタイムスタンプとの差のチェック(秒) の初期値
        関連項目:
        定数フィールド値
    • コンストラクタの詳細

      • DirWatch

        public DirWatch​(java.nio.file.Path sPath)
        スキャンパスを引数に作成される、コンストラクタです。 ここでは、階層検索しない(useTree=false)で、インスタンス化します。
        パラメータ:
        sPath - 検索対象となるスキャンパス
      • DirWatch

        public DirWatch​(java.nio.file.Path sPath,
                        boolean useTree)
        スキャンパスと関数型インターフェースフォルダを引数に作成される、コンストラクタです。
        パラメータ:
        sPath - 検索対象となるスキャンパス
        useTree - 階層スキャンするかどうか(true:する/false:しない)
    • メソッドの詳細

      • setPathMatcher

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

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

        public void callback​(java.util.function.Consumer<java.nio.file.Path> act)
        ファイルパスを、引数に取る Consumer ダオブジェクトを設定します。 これは、関数型インタフェースなので、ラムダ式またはメソッド参照の代入先として使用できます。 イベントが発生したときの ファイルパス(監視フォルダで、resolveされた、正式なフルパス)を引数に、 accept(Path) メソッドが呼ばれます。
        パラメータ:
        act - 1つの入力(ファイルパス) を受け取る関数型インタフェース
        関連項目:
        Consumer.accept(Object)
      • start

        public void start()
        内部でScheduledExecutorServiceを作成して、ScheduledFuture に、自身をスケジュールします。 初期値( initDelay=10L , period=30L , timeDiff=10L ) で、 スキャンを開始します。 #start( 10L , 30L , 10L ) と同じです。
      • start

        public void start​(long initDelay,
                          long period,
                          long timeDiff)
        内部でScheduledExecutorServiceを作成して、ScheduledFuture に、自身をスケジュールします。 スキャン開始の遅延時間と、スキャン間隔、ファイルのタイムスタンプとの比較を指定して、スキャンを開始します。 ファイルのタイムスタンプとの差とは、ある一定時間経過したファイルのみ、action をcall します。
        パラメータ:
        initDelay - 最初にスキャンを実行するまでの遅延時間(秒)
        period - スキャンする間隔(秒)
        timeDiff - ファイルのタイムスタンプとの差のチェック(秒)
        変更履歴:
        7.2.5.0 (2020/06/01) ScheduledExecutorServiceをインスタンス変数にする。
      • stop

        public void stop()
        内部で作成した ScheduledFutureをキャンセルします。
        変更履歴:
        7.2.5.0 (2020/06/01) ScheduledExecutorServiceを初期化する。
      • isErrorStatus

        public boolean isErrorStatus()
        このフォルダスキャンで、最後に処理した結果が、エラーの場合に、true を返します。 対象フォルダが見つからない場合や、検索時にエラーが発生した場合に、true にセットされます。 正常にスキャンできた場合は、false にリセットされます。
        戻り値:
        エラー状態(true:エラー,false:正常)
        変更履歴:
        7.2.5.0 (2020/06/01) 新規追加。
      • run

        public void run()
        Runnableインターフェースのrunメソッドです。 規定のスケジュール時刻が来ると、呼ばれる runメソッドです。 ここで、条件に一致したPathオブジェクトが存在すれば、コンストラクタで渡した 関数型インターフェースがcallされます。
        定義:
        run インタフェース内 java.lang.Runnable
        変更履歴:
        6.8.2.2 (2017/11/02) ネットワークパスのチェックを行います。, 7.2.5.0 (2020/06/01) ネットワークパスのチェックを行います。
      • setAdd

        public boolean setAdd​(java.nio.file.Path path)
        スキャンファイルの重複チェック用SetにPathを追加します。 このセット内に、指定された要素がなかった場合はtrueを返します。
        パラメータ:
        path - 登録対象となるパス
        戻り値:
        このセット内に、指定された要素がなかった場合はtrue
        変更履歴:
        1.3.0 (2019/04/01) イベントが同時に発生する可能性があるので、Setで重複を除外します。
      • setClear

        public void setClear()
        スキャンファイルの重複チェック用Setをクリアします。 短時間に大量のファイルを処理する場合にイベントとDirWatchが重複したり、 DirWatch 自身が繰返しで重複処理する場合を想定して、同じファイル名は処理しません。 ただし、DATファイルは、基本同じファイル名で来るので、あるタイミングでクリアする必要があります。
        変更履歴:
        1.3.0 (2019/04/01) イベントが同時に発生する可能性があるので、Setで重複を除外します。
      • toString

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