Class FileRecordWriter

java.lang.Object
nablarch.core.dataformat.FileRecordWriter
All Implemented Interfaces:
Closeable, AutoCloseable

@Published(tag="architect") public class FileRecordWriter extends Object implements Closeable
データレコードをファイルに出力するクラス。

出力形式のフォーマット定義ファイルと出力先ファイルを指定する。 明示的に指定しなかった場合のフォーマット定義ファイルの参照ディレクトリは、 "format"論理ベースパスに設定されたパスとなる。 同様に、データファイルの出力先は"output"論理ベースパスに設定されたパスとなる。

アプリケーションから、本クラスを直接使用することは許可しない。

本クラスはスレッドセーフな実装にはなっていないので、呼び出し元で同期化の制御を行うこと。

Author:
Iwauo Tajima
  • Constructor Summary

    Constructors
    Constructor
    Description
    FileRecordWriter(File dataFile, File layoutFile)
    書き込むデータファイルのファイル名を指定するコンストラクタ。 "input"論理ベースパス配下に存在する当該のファイル名のファイルにデータを書き出す。
    FileRecordWriter(File dataFile, File layoutFile, int bufferSize)
    書き込むデータファイルのベースパス論理名およびファイル名を指定するコンストラクタ。 指定されたベースパス配下に存在する当該のファイル名のファイルにデータを書き出す。
    FileRecordWriter(File dataFile, LayoutDefinition layoutDefinition)
    コンストラクタ。
    フォーマット定義ファイルを読まずに、LayoutDefinitionを直接指定する。
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    書き込み先のファイルストリームを閉じる。
    protected void
    出力ストリームを生成する。
    protected OutputStream
    createOutputStream(File dataFile, int bufferSize)
    出力ストリームを生成する。
    doWrite(String recordType, Map<String,?> record)
    レコードタイプを指定してレコードを出力する。
    doWrite(DataRecordFormatter formatter, String recordType, Map<String,?> record)
      レコードタイプを指定してレコードを出力する。
    protected void
    フォーマット定義を読み込み、出力先ストリームを作成する。
    protected void
    初期化処理を行う。
    出力ストリームを作成し、フォーマッタに設定する。
    write(String recordType, Map<String,?> record)
    レコードタイプを明示的に指定してレコードを出力する。
    write(Map<String,?> record)
    指定されたレコードデータファイルに出力する。 本メソッドでは、データファイルのストリームに対して書き込みを行うが、 フラッシュは行わず、ストリームも開いたまま維持される。 そのため、try-finally句で囲うなどして、書き込み終了後に 必ずclose()メソッドを実行する必要がある。 なお、本メソッドの処理中に例外が発生した場合、データファイルのストリームは 自動的にクローズされる。 (クローズメソッドを複数回呼んだとしても特に問題は発生しない。)

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • FileRecordWriter

      public FileRecordWriter(File dataFile, File layoutFile)
      書き込むデータファイルのファイル名を指定するコンストラクタ。 "input"論理ベースパス配下に存在する当該のファイル名のファイルにデータを書き出す。
      Parameters:
      dataFile - データファイル
      layoutFile - フォーマット定義ファイル
    • FileRecordWriter

      public FileRecordWriter(File dataFile, File layoutFile, int bufferSize)
      書き込むデータファイルのベースパス論理名およびファイル名を指定するコンストラクタ。 指定されたベースパス配下に存在する当該のファイル名のファイルにデータを書き出す。
      Parameters:
      dataFile - データファイル
      layoutFile - フォーマット定義ファイル
      bufferSize - ファイル読み込みの際に使用するバッファのサイズ
    • FileRecordWriter

      public FileRecordWriter(File dataFile, LayoutDefinition layoutDefinition)
      コンストラクタ。
      フォーマット定義ファイルを読まずに、LayoutDefinitionを直接指定する。
      Parameters:
      dataFile - データファイル
      layoutDefinition - フォーマット定義
  • Method Details

    • initialize

      protected void initialize()
      フォーマット定義を読み込み、出力先ストリームを作成する。
    • initialize

      protected void initialize(DataRecordFormatter formatter)
      初期化処理を行う。
      出力ストリームを作成し、フォーマッタに設定する。
      Parameters:
      formatter - フォーマッタ
    • write

      public FileRecordWriter write(Map<String,?> record)
      指定されたレコードデータファイルに出力する。 本メソッドでは、データファイルのストリームに対して書き込みを行うが、 フラッシュは行わず、ストリームも開いたまま維持される。 そのため、try-finally句で囲うなどして、書き込み終了後に 必ずclose()メソッドを実行する必要がある。 なお、本メソッドの処理中に例外が発生した場合、データファイルのストリームは 自動的にクローズされる。 (クローズメソッドを複数回呼んだとしても特に問題は発生しない。)
      Parameters:
      record - ファイルに出力するレコード
      Returns:
      このオブジェクト自体
    • write

      public FileRecordWriter write(String recordType, Map<String,?> record)
      レコードタイプを明示的に指定してレコードを出力する。
      Parameters:
      recordType - 出力するレコードのレコードタイプ
      record - 出力するレコード
      Returns:
      このオブジェクト自体
    • doWrite

      protected FileRecordWriter doWrite(String recordType, Map<String,?> record)
      レコードタイプを指定してレコードを出力する。
      Parameters:
      recordType - 出力するレコードのレコードタイプ
      record - 出力するレコード
      Returns:
      このオブジェクト自体
    • doWrite

      protected FileRecordWriter doWrite(DataRecordFormatter formatter, String recordType, Map<String,?> record)
        レコードタイプを指定してレコードを出力する。
      Parameters:
      formatter - フォーマッタ
      recordType - 出力するレコードのレコードタイプ
      record - 出力するレコード
      Returns:
      このオブジェクト自体
    • createOutputStream

      protected void createOutputStream()
      出力ストリームを生成する。
    • createOutputStream

      protected OutputStream createOutputStream(File dataFile, int bufferSize)
      出力ストリームを生成する。
      Parameters:
      dataFile - 出力先ファイル
      bufferSize - バッファサイズ
      Returns:
      出力ストリーム
    • close

      public void close()
      書き込み先のファイルストリームを閉じる。
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable