org.opengion.fukurou.util

## クラス FileUtil

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

-     public final class FileUtil
      extends Object

       FileUtil.java は、共通的に使用される File関連メソッドを集約した、クラスです。

       全変数は、public static final 宣言されており、全メソッドは、public static synchronized 宣言されています。

  機能分類
    ユーティリティ
  バージョン
    4.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK5.0,

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

    フィールド
    修飾子とタイプ | フィールドと説明
    --- | ---
    `static char` | `EXTENSION_SEPARATOR` 5.6.1.2 (2013/02/22) ファイルの拡張子の区切りを表す文字

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

    すべてのメソッド staticメソッド concreteメソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `static boolean` | `changeCrLfcopy(File fromFile, File toFile)` ファイルのバイナリコピーを行います。
    `static File` | `checkFile(String dir, String filename)` 指定のファイル名が、実際に存在しているかどうかをチェックします。
    `static File` | `checkFile(String dir, String filename, int count)` 指定のファイル名が、実際に存在しているかどうかをチェックします。
    `static boolean` | `copy(File fromFile, File toFile)` ファイルのバイナリコピーを行います。
    `static boolean` | `copy(File fromFile, File toFile, boolean keepTimeStamp)` ファイルのバイナリコピーを行います。
    `static boolean` | `copy(InputStream inStrm, File toFile)` ファイルのバイナリコピーを行います。
    `static boolean` | `copy(InputStream input, OutputStream output)` 入出力ストリーム間でデータの転送を行います。
    `static boolean` | `copy(String fromFile, String toFile)` ファイルのバイナリコピーを行います。
    `static boolean` | `copy(String fromFile, String toFile, boolean keepTimeStamp)` ファイルのバイナリコピーを行います。
    `static boolean` | `copyDirectry(File fromDir, File toDir)` 再帰処理でディレクトリをコピーします。
    `static boolean` | `copyDirectry(File fromDir, File toDir, boolean keepTimeStamp)` 再帰処理でディレクトリをコピーします。
    `static boolean` | `copyDirectry(String fromDir, String toDir)` 再帰処理でディレクトリのコピーを行います。
    `static boolean` | `deleteFiles(File file)` 指定されたファイル及びディレクトを削除します。
    `static BufferedReader` | `getBufferedReader(File file, String encode)` Fileオブジェクトとエンコードより BufferedReaderオブジェクトを作成します。
    `static void` | `getFileList(File dir, boolean sort, List list)` 指定されたディレクトリを基点としたファイル名(パスを含む)の一覧を返します。
    `static void` | `getFileList(File dir, boolean sort, List list, boolean isCopy)` 指定されたディレクトリを基点としたファイル名(パスを含む)の一覧を返します。
    `static List` | `getLineList(String filename, String encode)` 改行コードで分割して、Listオブジェクトを返します。
    `static PrintWriter` | `getLogWriter(String file)` ファイル名より、PrintWriterオブジェクトを作成する簡易メソッドです。
    `static PrintWriter` | `getNonFlushPrintWriter(Writer writer)` PrintWriter を継承した、JspWriterなどの Writer 用のクラスを定義します。
    `static PrintWriter` | `getPrintWriter(File file, String encode)` Fileオブジェクトとエンコードより PrintWriterオブジェクトを作成します。
    `static PrintWriter` | `getPrintWriter(File file, String encode, boolean append)` Fileオブジェクトとエンコードより PrintWriterオブジェクトを作成します。
    `static PrintWriter` | `getPrintWriter(OutputStream os, String encode)` OutputStreamとエンコードより PrintWriterオブジェクトを作成します。
    `static String` | `getValue(String filename, String encode)` ファイルを読み取って、文字列を作成します。
    `static void` | `main(String[] args)` ファイルをコピーします。
    `static File` | `renameTo(File fromFile, File toFile, String useBackup)` ファイルをリネームを行います。

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

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

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

    - #### EXTENSION_SEPARATOR

          public static final char EXTENSION_SEPARATOR

      5.6.1.2 (2013/02/22) ファイルの拡張子の区切りを表す文字
      関連項目:
        定数フィールド値

  - ### メソッドの詳細

    - #### getPrintWriter

          public static PrintWriter getPrintWriter(File file,
                                                   String encode)

      Fileオブジェクトとエンコードより PrintWriterオブジェクトを作成します。
      パラメータ:
        `file` - 出力するファイルオブジェクト
        `encode` - ファイルのエンコード
      戻り値:
        PrintWriterオブジェクト
      例外:
        `RuntimeException` - 何らかのエラーが発生した場合
      このメソッドは、nullを返しません

    - #### getPrintWriter

          public static PrintWriter getPrintWriter(File file,
                                                   String encode,
                                                   boolean append)

      Fileオブジェクトとエンコードより PrintWriterオブジェクトを作成します。
      パラメータ:
        `file` - 出力するファイルオブジェクト
        `encode` - ファイルのエンコード
        `append` - ファイルを追加モード(true)にするかどうか
      戻り値:
        PrintWriterオブジェクト
      例外:
        `RuntimeException` - 何らかのエラーが発生した場合
      このメソッドは、nullを返しません

    - #### getLogWriter

          public static PrintWriter getLogWriter(String file)

      ファイル名より、PrintWriterオブジェクトを作成する簡易メソッドです。 これは、ファイル名は、フルパスで、追加モードで、UTF-8 エンコードの ログファイルを出力する場合に使用します。 また、ファイル名に、"System.out" と、"System.err" を指定できます。 その場合は、標準出力、または、標準エラー出力に出力されます。 "System.out" と、"System.err" を指定した場合は、NonClosePrintWriter オブジェクトが返されます。これは、close() 処理が呼ばれても、何もしない クラスです。また、常に内部キャッシュの同じオブジェクトが返されます。
      パラメータ:
        `file` - 出力するファイル名
      戻り値:
        PrintWriterオブジェクト
      例外:
        `RuntimeException` - 何らかのエラーが発生した場合
        `IllegalArgumentException` - ファイル名が null の場合

    - #### getPrintWriter

          public static PrintWriter getPrintWriter(OutputStream os,
                                                   String encode)

      OutputStreamとエンコードより PrintWriterオブジェクトを作成します。
      パラメータ:
        `os` - 利用するOutputStream
        `encode` - ファイルのエンコード
      戻り値:
        PrintWriterオブジェクト
      例外:
        `RuntimeException` - 何らかのエラーが発生した場合
      変更履歴:

        5.5.2.0 (2012/05/01) 新規追加

    - #### getNonFlushPrintWriter

          public static PrintWriter getNonFlushPrintWriter(Writer writer)

      PrintWriter を継承した、JspWriterなどの Writer 用のクラスを定義します。 例えば、JspWriterなどの JSP/Servlet等のフレームワークで使用される Writer では、flush や close 処理は、フレームワーク内で行われます。 その場合、通常のファイルと同じ用に、flush や close をアプリケーション側で 行うと、内部処理的に不整合が発生したり、最悪の場合エラーになります。 このクラスは、NonFlushPrintWriter クラスのオブジェクトを返します。 これは、通常の、new PrintWriter( Writer ) で、求めるのと、ほとんど同様の 処理を行いますが、close() と flush() メソッドが呼ばれても、何もしません。
      パラメータ:
        `writer` - 出力するWriteオブジェクト(NonFlushPrintWriterクラス)
      戻り値:
        PrintWriterオブジェクト
      このメソッドは、nullを返しません

    - #### getBufferedReader

          public static BufferedReader getBufferedReader(File file,
                                                         String encode)

      Fileオブジェクトとエンコードより BufferedReaderオブジェクトを作成します。 これは、java 1.7 以降でしか使えませんが、FilesとPaths を使用した BufferedReader オブジェクトを返します。 encode は、java.nio.charset.Charset になる為、従来のコードと異なるかも知れませんが、 日本語関係の判定をより正確に行う事が可能になります。(Windows-31J と UTF-8の判別など)
      パラメータ:
        `file` - 入力するファイルオブジェクト
        `encode` - ファイルのエンコード(java.nio.charset.Charset)
      戻り値:
        BufferedReaderオブジェクト
      例外:
        `RuntimeException` - 何らかのエラーが発生した場合
      変更履歴:

        6.2.0.0 (2015/02/27) java.nio.file.Files と、Paths を使用するように変更

      このメソッドは、nullを返しません

    - #### checkFile

          public static File checkFile(String dir,
                                       String filename)

      指定のファイル名が、実際に存在しているかどうかをチェックします。 存在しない場合は、２秒毎に、３回確認します。 それでも存在しない場合は、エラーを返します。 return されるFileオブジェクトは、正規の形式(CanonicalFile)です。
      パラメータ:
        `dir` - フォルダ名
        `filename` - ファイル名
      戻り値:
        存在チェック(なければ null/あれば、CanonicalFile)

    - #### checkFile

          public static File checkFile(String dir,
                                       String filename,
                                       int count)

      指定のファイル名が、実際に存在しているかどうかをチェックします。 存在しない場合は、２秒毎に、指定の回数分確認します。 それでも存在しない場合は、エラーを返します。 return されるFileオブジェクトは、正規の形式(CanonicalFile)です。
      パラメータ:
        `dir` - フォルダ名
        `filename` - ファイル名
        `count` - 回数指定
      戻り値:
        存在チェック(なければ null/あれば、CanonicalFile)

    - #### copy

          public static boolean copy(String fromFile,
                                     String toFile)

      ファイルのバイナリコピーを行います。 copy( File,File,false ) を呼び出します。
      パラメータ:
        `fromFile` - コピー元ファイル名
        `toFile` - コピー先ファイル名
      戻り値:
        バイナリコピーが正常に終了したかどうか[true:成功/false:失敗]
      関連項目:
        `copy( File,File,boolean )`
      変更履歴:

        5.1.6.0 (2010/05/01) 戻り値に、true/false 指定します。

    - #### copy

          public static boolean copy(String fromFile,
                                     String toFile,
                                     boolean keepTimeStamp)

      ファイルのバイナリコピーを行います。 copy( File,File,boolean ) を呼び出します。 第３引数の、keepTimeStamp=true で、コピー元のファイルのタイムスタンプを、 コピー先にもセットします。
      パラメータ:
        `fromFile` - コピー元ファイル名
        `toFile` - コピー先ファイル名
        `keepTimeStamp` - タイムスタンプ維持[true/false]
      戻り値:
        バイナリコピーが正常に終了したかどうか[true:成功/false:失敗]
      関連項目:
        `copy( File,File,boolean )`
      変更履歴:

        5.1.6.0 (2010/05/01) 戻り値に、true/false 指定します。

    - #### copy

          public static boolean copy(File fromFile,
                                     File toFile)

      ファイルのバイナリコピーを行います。 copy( File,File,false ) を呼び出します。
      パラメータ:
        `fromFile` - コピー元ファイル
        `toFile` - コピー先ファイル
      戻り値:
        バイナリコピーが正常に終了したかどうか[true:成功/false:失敗]
      関連項目:
        `copy( File,File,boolean )`
      変更履歴:

        5.1.6.0 (2010/05/01) 戻り値に、true/false 指定します。

    - #### copy

          public static boolean copy(File fromFile,
                                     File toFile,
                                     boolean keepTimeStamp)

      ファイルのバイナリコピーを行います。 第３引数の、keepTimeStamp=true で、コピー元のファイルのタイムスタンプを、 コピー先にもセットします。 toFile が、ディレクトリの場合は、fromFile のファイル名をそのままコピーします。 // * fromFile がディレクトリの場合は、エラーにします。 // * copyDirectry( File,Fileboolean )を使用してください。(自動処理はしていません) fromFile がディレクトリの場合は、copyDirectry( File,Fileboolean )を call します。
      パラメータ:
        `fromFile` - コピー元ファイル
        `toFile` - コピー先ファイル
        `keepTimeStamp` - タイムスタンプ維持[true/false]
      戻り値:
        バイナリコピーが正常に終了したかどうか[true:成功/false:失敗]
      関連項目:
        `copyDirectry( File,File,boolean )`
      変更履歴:

        5.1.6.0 (2010/05/01) 新規追加
        5.6.5.2 (2013/06/21) ByteBufferを利用した方式から、transferTo を使用する方式に変更
        5.7.1.2 (2013/12/20) copy先(toFile)のフォルダが存在しなければ、作成します。
        6.3.6.1 (2015/08/28) copy元(fromFile)がフォルダがディレクトリの場合は、#copyDirectry( File,File,boolean ) を呼ぶ。
        6.3.6.1 (2015/08/28) Exception発生時に return ではなく、StringUtil.ogErrMsg に変更。
        6.3.8.5 (2015/10/16) StringUtil.ogErrMsgPrint 使用。
        6.4.2.0 (2016/01/29) StringUtil#ogErrMsgPrint(String,Throwable) を、ThrowUtilt#ogThrowMsg(String,Throwable) に変更。

    - #### changeCrLfcopy

          public static boolean changeCrLfcopy(File fromFile,
                                               File toFile)

      ファイルのバイナリコピーを行います。 このファイルコピーは、バイナリファイルの 改行コードを CR+LF に統一します。また、UTF-8 の BOM(0xef,0xbb,0xbf) があれば、 取り除きます。
      パラメータ:
        `fromFile` - コピー元ファイル
        `toFile` - コピー先ファイル
      戻り値:
        バイナリコピーが正常に終了したかどうか[true:成功/false:失敗]
      変更履歴:

        5.1.6.0 (2010/05/01) 新規追加
        6.3.6.1 (2015/08/28) Exception発生時に return ではなく、StringUtil.ogErrMsg に変更。
        6.3.8.5 (2015/10/16) StringUtil.ogErrMsgPrint 使用。
        6.4.2.0 (2016/01/29) StringUtil#ogErrMsgPrint(String,Throwable) を、ThrowUtilt#ogThrowMsg(String,Throwable) に変更。

    - #### copy

          public static boolean copy(InputStream inStrm,
                                     File toFile)

      ファイルのバイナリコピーを行います。 コピー元のファイルは、InputStream で指定します。 元は、jsp/common 以下を圧縮、jar化したため、物理ファイルの取得が できなくなったため、ServletContext#getServletContext() で、ローカルリソースを 取得するのが目的です。汎用的に、入力は、InputStream にしました。 URLConnection 等で、取得する場合は、BASIC認証も考慮する必要がありますので、 ご注意ください。 タイムスタンプのコピーは行いません。
      パラメータ:
        `inStrm` - コピー元のInputStream(この中でcloseします)
        `toFile` - コピー先ファイル
      戻り値:
        バイナリコピーが正常に終了したかどうか[true:成功/false:失敗]
      関連項目:
        `copy( File,File )`
      変更履歴:

        6.3.6.1 (2015/08/28) InputStreamで指定されたファイルのコピー
        6.3.8.5 (2015/10/16) StringUtil.ogErrMsgPrint 使用。
        6.4.2.0 (2016/01/29) StringUtil#ogErrMsgPrint(String,Throwable) を、ThrowUtilt#ogThrowMsg(String,Throwable) に変更。

    - #### copy

          public static boolean copy(InputStream input,
                                     OutputStream output)

      入出力ストリーム間でデータの転送を行います。 ここでは、すでに作成されたストリームに基づき、データの入出力を行います。 よって、先にフォルダ作成や、存在チェック、ファイルの削除などの必要な処理は 済まして置いてください。 また、このメソッド内で、ストリームのクロース処理は行っていません。
      パラメータ:
        `input` - 入力ストリーム
        `output` - 出力ストリーム
      戻り値:
        データ転送が正常に終了したかどうか[true:成功/false:失敗]
      変更履歴:

        5.1.6.0 (2010/05/01) 新規追加
        6.3.6.1 (2015/08/28) エラー時のメッセージ情報を増やします。
        6.3.8.5 (2015/10/16) StringUtil#ogErrMsgPrint 使用。
        6.4.2.0 (2016/01/29) StringUtil#ogErrMsgPrint(String,Throwable) を、ThrowUtilt#ogThrowMsg(String,Throwable) に変更。

    - #### copyDirectry

          public static boolean copyDirectry(String fromDir,
                                             String toDir)

      再帰処理でディレクトリのコピーを行います。 指定されたコピー元ディレクトリがディレクトリでなかったり存在しないときは falseを返します。
      パラメータ:
        `fromDir` - コピー元ディレクトリ名
        `toDir` - コピー先ディレクトリ名
      戻り値:
        ディレクトリのコピーが正常に終了したかどうか[true:成功/false:失敗]
      変更履歴:

        4.3.0.0 (2008/07/24) 追加
        5.1.6.0 (2010/05/01) 戻り値に、true/false 指定します。

    - #### copyDirectry

          public static boolean copyDirectry(File fromDir,
                                             File toDir)

      再帰処理でディレクトリをコピーします。 指定されたコピー元ディレクトリがディレクトリでなかったり存在しないときは falseを返します。
      パラメータ:
        `fromDir` - コピー元ディレクトリ
        `toDir` - コピー先ディレクトリ
      戻り値:
        ディレクトリのコピーが正常に終了したかどうか[true:成功/false:失敗]
      変更履歴:

        4.3.0.0 (2008/07/24) 追加
        5.1.6.0 (2010/05/01) 内部処理を若干変更します。

    - #### copyDirectry

          public static boolean copyDirectry(File fromDir,
                                             File toDir,
                                             boolean keepTimeStamp)

      再帰処理でディレクトリをコピーします。 指定されたコピー元ディレクトリがディレクトリでなかったり存在しないときは falseを返します。
      パラメータ:
        `fromDir` - コピー元ディレクトリ
        `toDir` - コピー先ディレクトリ
        `keepTimeStamp` - タイムスタンプ維持[true/false]
      戻り値:
        ディレクトリのコピーが正常に終了したかどうか[true:成功/false:失敗]
      変更履歴:

        4.3.0.0 (2008/07/24) 追加
        5.1.6.0 (2010/05/01) 内部処理を若干変更します。
        5.3.7.0 (2011/07/01) フォルダにアクセスできない場合は、エラーを返します。

    - #### deleteFiles

          public static boolean deleteFiles(File file)

      指定されたファイル及びディレクトを削除します。 ディレクトリの場合はサブフォルダ及びファイルも削除します。 １つでもファイルの削除に失敗した場合、その時点で処理を中断しfalseを返します。
      パラメータ:
        `file` - 削除ファイル/ディレクトリ
      戻り値:
        ファイル/ディレクトリの削除に終了したかどうか[true:成功/false:失敗]
      変更履歴:

        5.3.7.0 (2011/07/01) フォルダにアクセスできない場合は、エラーを返します。

    - #### getFileList

          public static void getFileList(File dir,
                                         boolean sort,
                                         List list,
                                         boolean isCopy)

      指定されたディレクトリを基点としたファイル名(パスを含む)の一覧を返します。
      パラメータ:
        `dir` - 基点となるディレクトリ
        `sort` - ファイル名でソートするか
        `list` - ファイル名一覧を格納するList
        `isCopy` - コピー中ファイルを除外するか [true:含む/false:除外]
      変更履歴:

        4.3.6.6 (2009/05/15) 新規作成
        5.4.3.2 (2012/01/06) 引数isCopy追加
        6.3.9.0 (2015/11/06) null になっている可能性があるメソッドの戻り値のnullチェックを追加。

    - #### getFileList

          public static void getFileList(File dir,
                                         boolean sort,
                                         List list)

      指定されたディレクトリを基点としたファイル名(パスを含む)の一覧を返します。 互換性のため、コピー中ファイルも含みます。
      パラメータ:
        `dir` - 基点となるディレクトリ
        `sort` - ファイル名でソートするか
        `list` - ファイル名一覧を格納するList
      変更履歴:

        5.4.3.2 (2012/01/06) コピー中対応のため引数４つを作成する

    - #### renameTo

          public static File renameTo(File fromFile,
                                      File toFile,
                                      String useBackup)

      ファイルをリネームを行います。 引数のuseBackup属性を true にすると、toFile が存在した場合、toFile の直下に "_backup" フォルダを 作成して、toFile ＋ "_" ＋ (現在時刻のLONG値) ＋ "." ＋ (toFileの拡張子) に名前変更します。 useBackup属性を rename にすると、toFile が存在した場合、toFile に、"_001" からなる 連番を付与し、重複しなくなるまで、名前を変更します。 useBackup属性を false(またはnull) にすると、toFile が存在した場合、toFile を削除します。 戻り値は、変更後のファイルオブジェクトです。
      パラメータ:
        `fromFile` - 名前変更する元のファイル
        `toFile` - 名前変更後のファイル
        `useBackup` - 置き換えファイルの処理方法(true:backupフォルダ/false:しない/rename:重複しない連番)
      戻り値:
        名前変更後のファイル
      例外:
        `RuntimeException` - 名称変更処理ができなかった場合。
      変更履歴:

        5.7.1.2 (2013/12/20) 新規追加
        6.0.2.4 (2014/10/17) useBackup の機能追加
        6.2.0.0 (2015/02/27) FileInfoクラスを使用。 (#getFileSplit(File)の結果配列は廃止)

    - #### getValue

          public static String getValue(String filename,
                                        String encode)

      ファイルを読み取って、文字列を作成します。 データの読取が完全に出来なかったときには、途中までのデータを返します。 指定のエンコードが存在しない場合や、ファイルが存在しない場合は、 OgRuntimeException を throw します。 encode が null の場合は、UTF-8 で読み込みます。
      パラメータ:
        `filename` - ファイル名
        `encode` - エンコード名
      戻り値:
        ファイルを読み取った文字列
      例外:
        `RuntimeException` - 指定のエンコードが存在しなかったとき。
      変更履歴:

        6.4.2.0 (2016/01/29) fukurou.util.StringUtil → fukurou.system.HybsConst に変更
        6.4.5.1 (2016/04/28) encode は初期化しているため、null はセットされません。
        6.4.5.2 (2016/05/06) fukurou.util.FileString から、fukurou.util.FileUtil に移動。

    - #### getLineList

          public static List getLineList(String filename,
                                         String encode)

      改行コードで分割して、Listオブジェクトを返します。 encode が null の場合は、UTF-8 で読み込みます。
      パラメータ:
        `filename` - ファイル名
        `encode` - エンコード名
      戻り値:
        ファイルを読み取った文字列を分割したList
      変更履歴:

        6.4.5.2 (2016/05/06) fukurou.util.FileString から、fukurou.util.FileUtil に移動。

    - #### main

          public static void main(String[] args)
                           throws Throwable

      ファイルをコピーします。 引数に <file1> <file2> [<encode1> <encode2>] を指定します。 file1 を読み込み、file2 にコピーします。コピー前に、file2 は、file2_backup にコピーします。 file1 が、ディレクトリの場合は、ディレクトリごとコピーします。 encode1、encode2 を指定すると、エンコード変換しながらコピーになります。 この場合は、ファイル同士のコピーのみになります。
      パラメータ:
        `args` - 引数配列 file1 file2 [encode1 encode2]
      例外:
        `Throwable` - なんらかのエラーが発生した場合。
      変更履歴:

        4.0.0.0 (2007/11/28) メソッドの戻り値をチェックします。
        5.1.6.0 (2010/05/01) 引数の並び順、処理を変更します。

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