org.opengion.fukurou.fileexec

## クラス FileUtil

- java.lang.Object
- - org.opengion.fukurou.fileexec.FileUtil

-     public final class FileUtil
      extends java.lang.Object

       FileUtilは、共通的に使用されるファイル操作関連のメソッドを集約した、ユーティリティークラスです。

       読み込みチェックや、書き出しチェックなどの簡易的な処理をまとめているだけです。

  変更履歴:
    7.0.0.0 (2017/07/07) 新規作成
  バージョン
    7.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK1.8,

- - ### フィールドのサマリー

    フィールド
    修飾子とタイプ | フィールドと説明
    --- | ---
    `static int` | `LOCK_RETRY_COUNT` ファイルロックの獲得までのリトライ回数 10
    `static int` | `LOCK_SLEEP_TIME` ファイルロックの獲得までの待ち時間(ミリ秒) 2000
    `static int` | `STABLE_RETRY_COUNT` ファイルが安定するまでのリトライ回数 10
    `static int` | `STABLE_SLEEP_TIME` ファイルが安定するまでの待ち時間(ミリ秒) 2000
    `static java.lang.String` | `USAGE` main メソッドから呼ばれる ヘルプメッセージです。
    `static java.nio.charset.Charset` | `UTF_8` 日本語用の、UTF-8 の、Charset (Windows-31Jと同じように指定できるようにしておきます。)
    `static java.nio.charset.Charset` | `WINDOWS_31J` 日本語用の、Windows-31J の、Charset

  - ### メソッドのサマリー

    すべてのメソッド staticメソッド concreteメソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `static java.nio.file.Path` | `backup(java.nio.file.Path from, java.nio.file.Path to)` 単体ファイルをバックアップフォルダに移動します。
    `static java.nio.file.Path` | `backup(java.nio.file.Path from, java.nio.file.Path to, boolean useLock, boolean existsCheck, java.lang.String sufix)` パスの共有ロックを指定して、単体ファイルをバックアップフォルダに移動します。
    `static java.nio.file.Path` | `backup(java.nio.file.Path from, java.nio.file.Path to, java.lang.String sufix)` 単体ファイルをバックアップフォルダに移動します。
    `static void` | `copy(java.nio.file.Path from, java.nio.file.Path to)` 単体ファイルをコピーします。
    `static void` | `copy(java.nio.file.Path from, java.nio.file.Path to, boolean useLock)` パスの共有ロックを指定した、単体ファイルをコピーします。
    `static void` | `delete(java.nio.file.Path start)` ファイルまたはフォルダ階層を削除します。
    `static void` | `forEach(java.nio.file.Path inPath, java.nio.charset.Charset chset, java.util.function.Consumer action)` 指定のパスから、１行づつ読み取った結果をConsumerにセットする繰り返しメソッドです。
    `static void` | `forEach(java.nio.file.Path inPath, java.util.function.Consumer action)` 指定のパスから、１行づつ読み取った結果をConsumerにセットする繰り返しメソッドです。
    `static void` | `lockForEach(java.nio.file.Path inPath, java.nio.charset.Charset chset, java.util.function.Consumer action)` 指定のパスを共有ロックして、１行づつ読み取った結果をConsumerにセットする繰り返しメソッドです。
    `static void` | `lockForEach(java.nio.file.Path inPath, java.util.function.Consumer action)` 指定のパスを共有ロックして、１行づつ読み取った結果をConsumerにセットする繰り返しメソッドです。
    `static void` | `lockPath(java.nio.file.Path inPath, java.util.function.Consumer action)` 指定のパスを共有ロックして、Consumer#action(Path) メソッドを実行します。
    `static void` | `main(java.lang.String[] args)` リソース一覧を表示する main メソッドです。
    `static void` | `mkdirs(java.nio.file.Path target)` 引数のファイルパスを親階層を含めて生成します。
    `static void` | `move(java.nio.file.Path from, java.nio.file.Path to)` 単体ファイルを移動します。
    `static void` | `move(java.nio.file.Path from, java.nio.file.Path to, boolean useLock)` パスの共有ロックを指定した、単体ファイルを移動します。
    `static java.nio.file.Path` | `newPath(java.nio.file.Path path, java.lang.String fname)` ファイルオブジェクトを作成します。
    `static java.nio.file.Path` | `readPath(java.lang.String first, java.lang.String[] more)` 引数の文字列を連結した読み込み用パスのチェックを行い、存在する場合は、そのパスオブジェクトを返します。
    `static void` | `save(java.nio.file.Path savePath, java.util.List lines)` 指定のパスに１行単位の文字列のListを書き込んでいきます。
    `static void` | `save(java.nio.file.Path savePath, java.util.List lines, boolean append, java.nio.charset.Charset chset)` 指定のパスに１行単位の文字列のListを書き込んでいきます。
    `static boolean` | `stablePath(java.nio.file.Path path)` 指定のパスのファイルが、書き込まれている途中かどうかを判定し、落ち着くまで待ちます。
    `static boolean` | `stablePath(java.nio.file.Path path, long sleep, int cnt)` 指定のパスのファイルが、書き込まれている途中かどうかを判定し、落ち着くまで待ちます。
    `static java.lang.String` | `timeStamp(java.nio.file.Path path, java.lang.String format)` 指定のパスの最終更新日付を、文字列で返します。
    `static java.nio.file.Path` | `writePath(java.lang.String first, java.lang.String[] more)` 引数の文字列を連結した書き込み用パスを作成します。

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

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### フィールドの詳細

    - #### STABLE_SLEEP_TIME

          public static final int STABLE_SLEEP_TIME

      ファイルが安定するまでの待ち時間(ミリ秒) 2000
      関連項目:
        定数フィールド値

    - #### STABLE_RETRY_COUNT

          public static final int STABLE_RETRY_COUNT

      ファイルが安定するまでのリトライ回数 10
      関連項目:
        定数フィールド値

    - #### LOCK_SLEEP_TIME

          public static final int LOCK_SLEEP_TIME

      ファイルロックの獲得までの待ち時間(ミリ秒) 2000
      関連項目:
        定数フィールド値

    - #### LOCK_RETRY_COUNT

          public static final int LOCK_RETRY_COUNT

      ファイルロックの獲得までのリトライ回数 10
      関連項目:
        定数フィールド値

    - #### WINDOWS_31J

          public static final java.nio.charset.Charset WINDOWS_31J

      日本語用の、Windows-31J の、Charset

    - #### UTF_8

          public static final java.nio.charset.Charset UTF_8

      日本語用の、UTF-8 の、Charset (Windows-31Jと同じように指定できるようにしておきます。)

    - #### USAGE

          public static final java.lang.String USAGE

      main メソッドから呼ばれる ヘルプメッセージです。 "Usage: java jp.euromap.eu63.util.FileUtil [-MOVE|-COPY|-DELETE|-BACKUP|-SAVE] from to [-useLock] [-append] [-help]"
      関連項目:
        定数フィールド値

  - ### メソッドの詳細

    - #### readPath

          public static java.nio.file.Path readPath(java.lang.String first,
                                                    java.lang.String[] more)

      引数の文字列を連結した読み込み用パスのチェックを行い、存在する場合は、そのパスオブジェクトを返します。 Paths#get(String,String...) で作成したパスオブジェクトに存在チェックを加えたものです。 そのパスが存在しなければ、例外をThrowします。
      パラメータ:
        `first` - パス文字列またはパス文字列の最初の部分
        `more` - 結合してパス文字列を形成するための追加文字列
      戻り値:
        指定の文字列を連結したパスオブジェクト
      例外:
        `java.lang.RuntimeException` - ファイル/フォルダは存在しない場合
      関連項目:
        `Paths.get(String,String...)`
      変更履歴:
        1.0.0 (2016/04/28) 新規追加

    - #### writePath

          public static java.nio.file.Path writePath(java.lang.String first,
                                                     java.lang.String[] more)

      引数の文字列を連結した書き込み用パスを作成します。 Paths#get(String,String...) で作成したパスオブジェクトに存在チェックを加え、 そのパスが存在しなければ、作成します。 パスが、フォルダの場合は、そのまま作成し、ファイルの場合は、親フォルダまでを作成します。 パスがフォルダかファイルかの区別は、拡張子があるかどうかで判定します。
      パラメータ:
        `first` - パス文字列またはパス文字列の最初の部分
        `more` - 結合してパス文字列を形成するための追加文字列
      戻り値:
        指定の文字列を連結したパスオブジェクト
      例外:
        `java.lang.RuntimeException` - ファイル/フォルダが作成できなかった場合
      関連項目:
        `Paths.get(String,String...)`
      変更履歴:
        1.0.0 (2016/04/28) 新規追加

    - #### newPath

          public static java.nio.file.Path newPath(java.nio.file.Path path,
                                                   java.lang.String fname)

      ファイルオブジェクトを作成します。 通常は、フォルダ＋ファイル名で、新しいファイルオブジェクトを作成します。 ここでは、第２引数のファイル名に、絶対パスを指定した場合は、第１引数の フォルダを使用せず、ファイル名だけで、ファイルオブジェクトを作成します。 第２引数のファイル名が、null か、ゼロ文字列の場合は、第１引数の フォルダを返します。
      パラメータ:
        `path` - 基準となるフォルダ(ファイルの場合は、親フォルダ基準)
        `fname` - ファイル名(絶対パス、または、相対パス)
      戻り値:
        合成されたファイルオブジェクト

    - #### mkdirs

          public static void mkdirs(java.nio.file.Path target)

      引数のファイルパスを親階層を含めて生成します。 すでに存在している場合や作成が成功した場合は、true を返します。 作成に失敗した場合は、false です。 指定のファイルパスは、フォルダであることが前提ですが、簡易的に ファイルの場合は、その親階層のフォルダを作成します。 ファイルかフォルダの判定は、拡張子があるか、ないかで判定します。
      パラメータ:
        `target` - ターゲットのファイルパス
      例外:
        `java.lang.RuntimeException` - フォルダの作成に失敗した場合
      変更履歴:
        1.0.0 (2016/04/28) 新規追加

    - #### copy

          public static void copy(java.nio.file.Path from,
                                  java.nio.file.Path to)

      単体ファイルをコピーします。 コピー先がなければ、コピー先のフォルダ階層を作成します。 コピー先がフォルダの場合は、コピー元と同じファイル名で、コピーします。 コピー先のファイルがすでに存在する場合は、上書きされますので、 必要であれば、先にバックアップしておいて下さい。
      パラメータ:
        `from` - コピー元となるファイル
        `to` - コピー先となるファイル
      例外:
        `java.lang.RuntimeException` - ファイル操作に失敗した場合
      関連項目:
        `copy(Path,Path,boolean)`
      変更履歴:
        1.0.0 (2016/04/28) 新規追加

    - #### copy

          public static void copy(java.nio.file.Path from,
                                  java.nio.file.Path to,
                                  boolean useLock)

      パスの共有ロックを指定した、単体ファイルをコピーします。 コピー先がなければ、コピー先のフォルダ階層を作成します。 コピー先がフォルダの場合は、コピー元と同じファイル名で、コピーします。 コピー先のファイルがすでに存在する場合は、上書きされますので、 必要であれば、先にバックアップしておいて下さい。 ※ copy に関しては、コピー時間を最小化する意味で、synchronized しています。
      パラメータ:
        `from` - コピー元となるファイル
        `to` - コピー先となるファイル
        `useLock` - パスを共有ロックするかどうか
      例外:
        `java.lang.RuntimeException` - ファイル操作に失敗した場合
      関連項目:
        `copy(Path,Path)`
      変更履歴:
        1.0.0 (2016/04/28) 新規追加

    - #### move

          public static void move(java.nio.file.Path from,
                                  java.nio.file.Path to)

      単体ファイルを移動します。 移動先がなければ、移動先のフォルダ階層を作成します。 移動先がフォルダの場合は、移動元と同じファイル名で、移動します。 移動先のファイルがすでに存在する場合は、上書きされますので、 必要であれば、先にバックアップしておいて下さい。
      パラメータ:
        `from` - 移動元となるファイル
        `to` - 移動先となるファイル
      例外:
        `java.lang.RuntimeException` - ファイル操作に失敗した場合
      関連項目:
        `move(Path,Path,boolean)`
      変更履歴:
        1.0.0 (2016/04/28) 新規追加

    - #### move

          public static void move(java.nio.file.Path from,
                                  java.nio.file.Path to,
                                  boolean useLock)

      パスの共有ロックを指定した、単体ファイルを移動します。 移動先がなければ、移動先のフォルダ階層を作成します。 移動先がフォルダの場合は、移動元と同じファイル名で、移動します。 移動先のファイルがすでに存在する場合は、上書きされますので、 必要であれば、先にバックアップしておいて下さい。 ※ move に関しては、ムーブ時間を最小化する意味で、synchronized しています。
      パラメータ:
        `from` - 移動元となるファイル
        `to` - 移動先となるファイル
        `useLock` - パスを共有ロックするかどうか
      例外:
        `java.lang.RuntimeException` - ファイル操作に失敗した場合
      関連項目:
        `move(Path,Path)`
      変更履歴:
        1.0.0 (2016/04/28) 新規追加

    - #### backup

          public static java.nio.file.Path backup(java.nio.file.Path from,
                                                  java.nio.file.Path to,
                                                  java.lang.String sufix)

      単体ファイルをバックアップフォルダに移動します。 これは、#backup( from,to,true,false,sufix ); と同じ処理を実行します。 移動先は、フォルダ指定で、ファイル名は存在チェックせずに、必ず変更します。 その際、移動元＋サフィックス のファイルを作成します。 ファイルのロックを行います。
      パラメータ:
        `from` - 移動元となるファイル
        `to` - 移動先となるフォルダ(nullの場合は、移動元と同じフォルダ)
        `sufix` - バックアップファイル名の後ろに付ける文字列
      戻り値:
        バックアップしたファイルパス。
      例外:
        `java.lang.RuntimeException` - ファイル操作に失敗した場合
      関連項目:
        `backup( Path , Path , boolean , boolean , String )`
      変更履歴:
        1.0.0 (2016/04/28) 新規追加

    - #### backup

          public static java.nio.file.Path backup(java.nio.file.Path from,
                                                  java.nio.file.Path to)

      単体ファイルをバックアップフォルダに移動します。 これは、#backup( from,to,true,true ); と同じ処理を実行します。 移動先は、フォルダ指定で、ファイル名は存在チェックの上で、無ければ移動、 あれば、移動元＋時間情報 のファイルを作成します。 ファイルのロックを行います。 移動先を指定しない(=null)場合は、自分自身のフォルダでの、ファイル名変更になります。
      パラメータ:
        `from` - 移動元となるファイル
        `to` - 移動先となるフォルダ(nullの場合は、移動元と同じフォルダ)
      戻り値:
        バックアップしたファイルパス。
      例外:
        `java.lang.RuntimeException` - ファイル操作に失敗した場合
      関連項目:
        `backup( Path , Path , boolean , boolean , String )`
      変更履歴:
        1.0.0 (2016/04/28) 新規追加

    - #### backup

          public static java.nio.file.Path backup(java.nio.file.Path from,
                                                  java.nio.file.Path to,
                                                  boolean useLock,
                                                  boolean existsCheck,
                                                  java.lang.String sufix)

      パスの共有ロックを指定して、単体ファイルをバックアップフォルダに移動します。 移動先のファイル名は、existsCheckが、trueの場合は、移動先のファイル名をチェックして、 存在しなければ、移動元と同じファイル名で、バックアップフォルダに移動します。 存在すれば、ファイル名＋サフィックス のファイルを作成します。(拡張子より後ろにサフィックスを追加します。) existsCheckが、false の場合は、無条件に、移動元のファイル名に、サフィックスを追加します。 サフィックスがnullの場合は、時間情報になります。 移動先を指定しない(=null)場合は、自分自身のフォルダでの、ファイル名変更になります。
      パラメータ:
        `from` - 移動元となるファイル
        `to` - 移動先となるフォルダ(nullの場合は、移動元と同じフォルダ)
        `useLock` - パスを共有ロックするかどうか
        `existsCheck` - 移動先のファイル存在チェックを行うかどうか(true:行う/false:行わない)
        `sufix` - バックアップファイル名の後ろに付ける文字列
      戻り値:
        バックアップしたファイルパス。
      例外:
        `java.lang.RuntimeException` - ファイル操作に失敗した場合
      関連項目:
        `backup( Path , Path )`
      変更履歴:
        1.0.0 (2016/04/28) 新規追加, 6.9.8.0 (2018/05/28) FindBugs:null になっている可能性があるメソッドの戻り値を利用している

    - #### delete

          public static void delete(java.nio.file.Path start)

      ファイルまたはフォルダ階層を削除します。 これは、指定のパスが、フォルダの場合、階層すべてを削除します。 階層の途中にファイル等が存在していたとしても、削除します。 Files.walkFileTree(Path,FileVisitor) を使用したファイル・ツリーの削除方式です。
      パラメータ:
        `start` - 削除開始ファイル
      例外:
        `java.lang.RuntimeException` - ファイル操作に失敗した場合
      変更履歴:
        1.0.0 (2016/04/28) 新規追加

    - #### stablePath

          public static boolean stablePath(java.nio.file.Path path)

      指定のパスのファイルが、書き込まれている途中かどうかを判定し、落ち着くまで待ちます。 FileUtil.stablePath( path , STABLE_SLEEP_TIME , STABLE_RETRY_COUNT ); と同じです。
      パラメータ:
        `path` - チェックするパスオブジェクト
      戻り値:
        true:安定した/false:安定しなかった。またはファイルが存在していない。
      関連項目:
        `STABLE_SLEEP_TIME`, `STABLE_RETRY_COUNT`

    - #### stablePath

          public static boolean stablePath(java.nio.file.Path path,
                                           long sleep,
                                           int cnt)

      指定のパスのファイルが、書き込まれている途中かどうかを判定し、落ち着くまで待ちます。 ファイルの安定は、ファイルのサイズをチェックすることで求めます。まず、サイズをチェックし、 sleepで指定した時間だけ、Thread.sleepします。再び、サイズをチェックして、同じであれば、 安定したとみなします。 なので、必ず、sleep で指定したミリ秒だけは、待ちます。 ファイルが存在しない、サイズが、０のままか、チェック回数を過ぎても安定しない場合は、 false が返ります。 サイズを求める際に、IOExceptionが発生した場合でも、falseを返します。
      パラメータ:
        `path` - チェックするパスオブジェクト
        `sleep` - 待機する時間(ミリ秒)
        `cnt` - チェックする回数
      戻り値:
        true:安定した/false:安定しなかった。またはファイルが存在していない。

    - #### lockPath

          public static void lockPath(java.nio.file.Path inPath,
                                      java.util.function.Consumer action)

      指定のパスを共有ロックして、Consumer#action(Path) メソッドを実行します。 共有ロック中は、ファイルを読み込むことは出来ますが、書き込むことは出来なくなります。 共有ロックの取得は、10 回実行し、2000 ミリ秒待機します。
      パラメータ:
        `inPath` - 処理対象のPathオブジェクト
        `action` - パスを引数に取るConsumerオブジェクト
      例外:
        `java.lang.RuntimeException` - ファイル読み込み時にエラーが発生した場合
      関連項目:
        `forEach(Path,Consumer)`, `LOCK_RETRY_COUNT`, `LOCK_SLEEP_TIME`

    - #### forEach

          public static void forEach(java.nio.file.Path inPath,
                                     java.util.function.Consumer action)

      指定のパスから、１行づつ読み取った結果をConsumerにセットする繰り返しメソッドです。 １行単位に、Consumer#action が呼ばれます。 このメソッドでは、Charset は、UTF-8 です。 ファイルを順次読み込むため、内部メモリを圧迫しません。
      パラメータ:
        `inPath` - 処理対象のPathオブジェクト
        `action` - 行を引数に取るConsumerオブジェクト
      例外:
        `java.lang.RuntimeException` - ファイル読み込み時にエラーが発生した場合
      関連項目:
        `lockForEach(Path,Consumer)`

    - #### forEach

          public static void forEach(java.nio.file.Path inPath,
                                     java.nio.charset.Charset chset,
                                     java.util.function.Consumer action)

      指定のパスから、１行づつ読み取った結果をConsumerにセットする繰り返しメソッドです。 １行単位に、Consumer#action が呼ばれます。 ファイルを順次読み込むため、内部メモリを圧迫しません。
      パラメータ:
        `inPath` - 処理対象のPathオブジェクト
        `chset` - ファイルを読み取るときのCharset
        `action` - 行を引数に取るConsumerオブジェクト
      例外:
        `java.lang.RuntimeException` - ファイル読み込み時にエラーが発生した場合
      関連項目:
        `lockForEach(Path,Consumer)`

    - #### lockForEach

          public static void lockForEach(java.nio.file.Path inPath,
                                         java.util.function.Consumer action)

      指定のパスを共有ロックして、１行づつ読み取った結果をConsumerにセットする繰り返しメソッドです。 １行単位に、Consumer#action が呼ばれます。 ファイルを順次読み込むため、内部メモリを圧迫しません。
      パラメータ:
        `inPath` - 処理対象のPathオブジェクト
        `action` - 行を引数に取るConsumerオブジェクト
      関連項目:
        `forEach(Path,Consumer)`

    - #### lockForEach

          public static void lockForEach(java.nio.file.Path inPath,
                                         java.nio.charset.Charset chset,
                                         java.util.function.Consumer action)

      指定のパスを共有ロックして、１行づつ読み取った結果をConsumerにセットする繰り返しメソッドです。 １行単位に、Consumer#action が呼ばれます。 ファイルを順次読み込むため、内部メモリを圧迫しません。
      パラメータ:
        `inPath` - 処理対象のPathオブジェクト
        `chset` - エンコードを指定するCharsetオブジェクト
        `action` - 行を引数に取るConsumerオブジェクト
      関連項目:
        `forEach(Path,Consumer)`

    - #### save

          public static void save(java.nio.file.Path savePath,
                                  java.util.List lines)

      指定のパスに１行単位の文字列のListを書き込んでいきます。 １行単位の文字列のListを作成しますので、大きなファイルの作成には向いていません。 書き込むパスの親フォルダがなければ作成します。 第２引数は、書き込む行データです。 このメソッドでは、Charset は、UTF-8 です。
      パラメータ:
        `savePath` - セーブするパスオブジェクト
        `lines` - 行単位の書き込むデータ
      例外:
        `java.lang.RuntimeException` - ファイル操作に失敗した場合
      関連項目:
        `save( Path , List , boolean , Charset )`
      変更履歴:
        1.0.0 (2016/04/28) 新規追加

    - #### save

          public static void save(java.nio.file.Path savePath,
                                  java.util.List lines,
                                  boolean append,
                                  java.nio.charset.Charset chset)

      指定のパスに１行単位の文字列のListを書き込んでいきます。 １行単位の文字列のListを作成しますので、大きなファイルの作成には向いていません。 書き込むパスの親フォルダがなければ作成します。 第２引数は、書き込む行データです。
      パラメータ:
        `savePath` - セーブするパスオブジェクト
        `lines` - 行単位の書き込むデータ
        `append` - trueの場合、ファイルの先頭ではなく最後に書き込まれる。
        `chset` - ファイルを読み取るときのCharset
      例外:
        `java.lang.RuntimeException` - ファイル操作に失敗した場合
      変更履歴:
        1.0.0 (2016/04/28) 新規追加

    - #### timeStamp

          public static java.lang.String timeStamp(java.nio.file.Path path,
                                                   java.lang.String format)

      指定のパスの最終更新日付を、文字列で返します。 文字列のフォーマット指定も可能です。 パスが無い場合や、最終更新日付を、取得できない場合は、現在時刻をベースに返します。
      パラメータ:
        `path` - 処理対象のPathオブジェクト
        `format` - 文字列化する場合のフォーマット(yyyyMMddHHmmss)
      戻り値:
        指定のパスの最終更新日付の文字列

    - #### main

          public static void main(java.lang.String[] args)

      リソース一覧を表示する main メソッドです。
      パラメータ:
        `args` - コマンド引数配列

Webアプリケーションフレームワーク openGion
Copyright (c) 2009 The openGion Project.