- PR -

CSVファイル読込み → データ保持について

投稿者投稿内容
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2005-10-31 15:50
どもです。がるです。
んっと。takashiさんが載せられているURLの通りになります。
強いて補足するとすると、
「項目そのものにカンマが含まれている場合は、項目全体を"で囲って出力します。」
は正しくは
「項目そのものにカンマや改行が含まれている場合は、項目全体を"で囲って出力します。」
です。
これで、データに何が来ても対応可能…なはずです。
# しまったs-jisとかチェックしてないや(苦笑

ちなみに、こういった仕様のおかげで、個人的に作ったCSV用の
セパレータは「状態遷移」バリバリ系の設計になってます(苦笑
ina
ベテラン
会議室デビュー日: 2005/04/14
投稿数: 58
投稿日時: 2005-10-31 16:12
個人的な意見ですが.....
取り込み時の汎用性よりも、後続処理での使い勝手を第一に考えるべきだと思います。

確かに、ListやHashMapを使うことにより、CSVファイル→データオブジェクトの変換そのもについてはすっきりとしたコードを書くことが可能だとは思います。

ですが、このやり方だと、後続処理に
BigDecimal price = (BigDecimal) map.get("price");
と言ったコードを強要させますよね?
それは、あまりにも酷い仕打ちかと思うんですが.....
ですので、
BigDecimal price = rec.getPrice();
と、簡単に取り扱える様にしてあげるべきだと思います。

がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2005-10-31 16:23
がるです。
ちょろっと突っ込み、程度なので軽く読み流していただけると。
引用:

inaさんの書き込み (2005-10-31 16:12) より:
取り込み時の汎用性よりも、後続処理での使い勝手を第一に考えるべきだと思います。


これ自体はそうだと思うのですが。

引用:

確かに、ListやHashMapを使うことにより、CSVファイル→データオブジェクトの変換そのもについてはすっきりとしたコードを書くことが可能だとは思います。

ですが、このやり方だと、後続処理に
BigDecimal price = (BigDecimal) map.get("price");
と言ったコードを強要させますよね?
それは、あまりにも酷い仕打ちかと思うんですが.....
ですので、
BigDecimal price = rec.getPrice();
と、簡単に取り扱える様にしてあげるべきだと思います。


これは、単純に「上に一枚ラッピングクラス」で片付くと
思うのですがどんなもんでしょうか?
ラッピングすると、案外「取り込み時の汎用性」と
「後続処理での使い勝手」って両立させやすいように
思うので。

以上、余談でした。
ina
ベテラン
会議室デビュー日: 2005/04/14
投稿数: 58
投稿日時: 2005-10-31 17:12
inaです。どうもです。
引用:

これは、単純に「上に一枚ラッピングクラス」で片付くと
思うのですがどんなもんでしょうか?
ラッピングすると、案外「取り込み時の汎用性」と
「後続処理での使い勝手」って両立させやすいように
思うので。


すみません、言葉足らずでしたね。
おっしゃる通りラップすればよろしいんですが、「汎用ユーティリティを作って、はいお終い。使う側は get("xxxx")で使ってね」ってなってしまうと嫌だなぁ
と思ったので、「使う側の事もちゃんと考えてあげてね」と思って書きました。
すみませんでした。

n.w
大ベテラン
会議室デビュー日: 2003/07/15
投稿数: 126
お住まい・勤務地: 神奈川
投稿日時: 2005-10-31 17:27
takashiさん、MMXさん、参考になるものありがとうございます。
まだじっくりはみれてませんが、検討させていただきます。

と思ってたら、がるがるさんありがとうござます。
すっきりしました。 現状は仕様上使わないですが、勉強になります。


inaさん
たしかに呼び出す側に関してはこれはしんどいです。
というのも、Javadocに使い方を書いていて、取得方法が
大変と気づいたので(遅い 汗 ) がるがるさんのいうようにラッピング
か同クラス内に取得用メソッドを作成しようかと考えてました。

みなさん貴重なご意見ありがとうございます。

スキルアップ/キャリアアップ(JOB@IT)