ヘルバ様の日常

テストを兼ねて色々試してみるブログです

JavaでCSVの読み込み(その6)

 

welcome-to-the-world.hatenablog.jp

 

 

 今回は「一般的なCSVを読み込む」を実装しようと思います。

 

 

前回も述べましたが「一般的なCSVを読み込む」とは下記の条件を満たすこととします。

 

  • 区切り文字はカンマ
  • 囲み文字はダブルクォーテーション
  • 改行も囲み文字に囲まれていれば1項目として読み込む

 

前回作成したベース(その5で作成)のCSVを読み込むメソッドをオーバーロードします。

 

 

実際のコードは下記の通りです。

 

/**
 * CSVの読み込み
 *
 * @param file Fileオブジェクト
 * @param bean Bean
 * @param charSets 文字コード
 * @param hasHeader ヘッダー有無
 * @param isSkipHeader ヘッダーのスキップ
 * @return Beanのリスト
 * @throws CsvUtilsException
 */
public static List<?> readCsv(File file, Object bean, String charSets,
		boolean hasHeader, 	boolean isSkipHeader) throws CsvUtilsException {
	// CSVの書式を指定(区切り文字の指定)
	CSVFormat format = CSVFormat.newFormat(COMMA);
	// 囲い文字の指定
	format = format.withQuote(DOUBLE_QUOTATION);
	// 囲い文字のモード
	format = format.withQuoteMode(QuoteMode.ALL);
	if (hasHeader && isSkipHeader) {
		// ヘッダーをスキップ
		format = format.withFirstRecordAsHeader();
	}
	// 空行を無効
	format = format.withIgnoreEmptyLines(true);
	// 空白を無効(囲い文字で囲まれている場合は有効)
	format = format.withIgnoreSurroundingSpaces(true);
	// CSVの読み込み(CSVFormatを渡す)
	return readCsv(file, bean, charSets, format);
}

 

引数として、文字コードやヘッダーの情報を指定します。 

 

 

メソッド内で

 

  • 区切り文字(カンマ:定数化)
  • 囲い文字(ダブルコーテーション:定数化)
  • 囲い文字は必須
  • ヘッダーの読み込み
  • 空行をスキップ
  • 空白を無効(囲み文字で囲まれている場合は有効)

 

を指定してベースのメソッド呼び出します。

 

 

実際の読み込みはベースのメソッドで実行されます。

 

 

これで「一般的なCSVを読み込む」の条件を満たしたメソッドの完成です。

 

 

次回は今回のメソッドより、もう少し読み込み条件を指定できるメソッドを作成したいと思います。

 

ヘルバ様独自のコーディングで手法、動作は保証はできません^^;
その点はご了承ください。