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 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 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 String` | `getBaseName(String filename)` 指定されたファイル名(パスを含む)から、パスも拡張子もないファイル名を返します。
    `static BufferedReader` | `getBufferedReader(File file, String encode)` Fileオブジェクトとエンコードより BufferedReaderオブジェクトを作成します。
    `static String` | `getExtension(String fileName)` ファイル名から 拡張子を取得します。
    `static void` | `getFileList(File dir, boolean sort, List<String> list)` 指定されたディレクトリを基点としたファイル名(パスを含む)の一覧を返します。
    `static void` | `getFileList(File dir, boolean sort, List<String> list, boolean isCopy)` 指定されたディレクトリを基点としたファイル名(パスを含む)の一覧を返します。
    `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 void` | `main(String[] args)` ファイルをコピーします。
    `static boolean` | `renameTo(File fromFile, File toFile, boolean 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` - 何らかのエラーが発生した場合

    - #### getPrintWriter

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

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

    - #### 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オブジェクト

    - #### getBufferedReader

          public static BufferedReader getBufferedReader(File file,
                                         String encode)

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

    - #### 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` - コピー元ファイル
        `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)のフォルダが存在しなければ、作成します。

    - #### 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) 新規追加

    - #### copy

          public static boolean copy(InputStream input,
                     OutputStream output)

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

        5.1.6.0 (2010/05/01) 新規追加

    - #### 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<String> 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追加

    - #### getFileList

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

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

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

    - #### getBaseName

          public static String getBaseName(String filename)

      指定されたファイル名(パスを含む)から、パスも拡張子もないファイル名を返します。
      パラメータ:
        `filename` - ファイル名(パスを含む)
      戻り値:
        パスも、拡張子もないファイル名
      変更履歴:

        5.6.1.2 (2013/02/22) 新規作成

    - #### renameTo

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

      ファイルをリネームを行います。 引数のuseBackup属性を true にすると、toFile が存在した場合、toFile の直下に "_backup" フォルダを 作成して、toFile ＋ "_" ＋ (現在時刻のLONG値) ＋ "." ＋ (toFileの拡張子) に名前変更します。 useBackup属性を false にすると、toFile が存在した場合、toFile を削除します。
      パラメータ:
        `fromFile` - 名前変更する元のファイル
        `toFile` - 名前変更後のファイル
        `useBackup` - バックアップを作成するかどうか(true:作成する/false:作成しない)
      戻り値:
        true:正常処理/false:異常処理
      変更履歴:

        5.7.1.2 (2013/12/20) 新規追加

    - #### getExtension

          public static String getExtension(String fileName)

      ファイル名から 拡張子を取得します。 一番最後に見つかったピリオドから後ろを切り取って返します。 拡張子の区切り文字(".")がなければ、空文字列を返します。
      パラメータ:
        `fileName` - ファイル名
      戻り値:
        拡張子
      変更履歴:

        5.7.1.2 (2013/12/20) UploadedFileからに移動。若干のロジック変更

    - #### 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.