Fork me on GitHub

OrangeSignal CSV とは

OrangeSignal CSV は CSV 入出力操作を簡易化させる高機能で便利な Java プラットフォーム向けの CSV ライブラリを提供します。
OrangeSignal CSV はパワフルであらゆるシチュエーションにマッチ可能な OSS (オープンソース・ソフトウェア) の CSV ライブラリです。

システム要件

  • JDK 6 以降または JRE 6 以降

機能・特徴

  • 区切り文字、囲み文字、エスケープ文字など CSV 形式を詳細に設定可能 (CsvConfig)

    区切り文字、囲み文字、エスケープ文字やその他もろもろの CSV 形式に関する設定が可能です。
    設定可能な項目は以下の通りです。

    • 区切り文字
    • 囲み文字 (無効化も可)
    • エスケープ文字 (無効化も可)
    • 項目値内の改行置換文字列
    • NULL 文字列 (大文字・小文字を区別する/しないの指定も可)
    • 項目値前のホワイトスペースを除去
    • 項目値後ろのホワイトスペースを除去
    • 空行を無視
    • 正規表現による行の無視
    • 行のスキップ
    • 可変項目数の可否 / 項目数チェック (Version 2.1 以上)
    • データ出力時の改行文字列

    ※ 一部の項目は入力時のみ、または出力時のみ有効となるものがあります。

  • CSV 入出力完全対応 (CsvReader / CsvWriter)

    データの行単位で CSV の入出力が可能な CSV 文字ストリームを提供しています。
    特徴は以下の通りです。

    • CSV トークン単位での物理行番号と論理行番号をサポートする CSV 文字入力ストリーム
    • 改行文字列や NULL 文字列、空行の出力可否などの指定が可能な CSV 文字出力ストリーム

    ※ Windows / MAC / Linux の改行文字をサポートしています。
    ※ RFC-4180 形式の CSV 入出力もサポートしています。
    ※ BOM (Byte Order Mark) 付き UTF-8 エンコーディングでの入出力もサポートしています。

    また、POJO や Map で CSV を行単位にやり取りできる各種 Reader / Writer も提供しています。

  • カスタマイズ可能な多様なデータハンドラを提供 (CsvHandler)

    以下のデータアクセスハンドラを提供しています。

    • スタンダードな文字列配列リスト (List<String[]>) 用アクセスハンドラ
    • データベース結果セット (ResultSet) 用アクセスハンドラ
    • CSV の項目位置と項目値マップリスト用アクセスハンドラ
    • CSV の項目名と項目値マップリスト用アクセスハンドラ
    • CSV の項目位置でマッピング可能な POJO オブジェクトリスト用アクセスハンドラ
    • CSV の項目名でマッピング可能な POJO オブジェクトリスト用アクセスハンドラ
    • アノテーションでマッピング可能な POJO オブジェクトリスト用アクセスハンドラ

    ※ すべてのデータアクセスハンドラはカスタマイズや拡張が可能です。
    ※ ハンドラは API として公開しているため、ご使用環境向け (特定用途向け) のハンドラを実装することが可能です。

  • 簡単に条件付けが可能なデータフィルターを提供

    流れるようなインタフェースで簡単に条件付けが可能なデータフィルターを提供しています。
    標準で提供している条件式は以下の通りです。

    • 論理演算 (and / or / not)
    • null 演算 (null / not null)
    • empty 演算 (empty / not empty)
    • 等価演算 (equal / not equal)
    • 比較演算 (gt / lt / ge / le / between)
    • 正規表現 (regex)
    • メンバシップ (in / not in)

    ※ O/R マッパーのように条件式を追加設定する方式もサポートしています。

  • 並び替え(ソート)機能を提供
    • O/R マッパーと同様の感覚で POJO オブジェクトの複数のフィールドを基準にした並び替えを簡単に行うことが可能です。
    • 並び替え(ソート)機能は、データフィルターや limit、offset 指定で部分抽出した POJO オブジェクトにも適用することが可能です。
  • 柔軟性のある CSV 統合アクセスユーティリティを提供 (Csv)

    OrangeSignal CSV の機能のほぼすべてが集約されている CSV アクセス操作用のユーティリティです。
    以下の形式での入出力に対応しています。

    • ファイル、ストリーム、文字ストリーム、CSV 文字ストリーム
    • ZIP / LHA 圧縮形式

    ※ ZIP / LHA 圧縮形式は圧縮データ中の特定エントリのみを処理させるフィルタ (エントリフィルタ) もサポートしています。
    ※ 指定する CSV 形式設定やデータハンドラの種類によって、データアクセスに使用するオブジェクトの型や CSV の解釈方法を柔軟に変化させることが可能です。

  • 流れるようなインタフェースの統合アクセスインターフェースを提供 (CsvManager)

    前項の CSV 統合アクセスユーティリティで OrangeSignal CSV のほぼ全ての機能をお使いいただけますが、
    CSV ⇔ POJO オブジェクト間のアクセス操作を更に容易にする手段として統合アクセスインターフェースを提供しています。

  • DI/AOP コンテナフレームワーク不要

    Spring FrameworkSeasar2 などの DI/AOP コンテナフレームワークが不要なので、
    依存関係を気にせずに現行システムやアプリケーションへの適用が可能です。

ライセンス

OrangeSignal CSV は、Apache ライセンス Version 2.0 に従って提供しておりますので、無料で自由にご利用いただけます。