- ベストアンサー
ファイル出力ついて
当方、JAVA初心者です。 CSVファイルの出力を行うプログラムを作成しています。 仕様として1行目はヘッダ部分を出力し、 2行目以降にDBの値を出力するCSVファイルを作成しようとしています。 例 (ヘッダ部分)"項目A----","項目B----","項目C----","項目D----" (データ部分)"項目Aの値","項目Bの値","項目Cの値","項目Dの値" ・ ・ ですが、データ部分の個数が不変になっており、ヘッダ部分がずれてしまいます。 例 項目Cの数が2個ある場合はデータ部分に項目Cの値を2個出力する為、 項目Dのヘッダ部の列の下に項目Cの2個目の値が書き込まれてしまいます。 "項目A----","項目B----","項目C-----","項目D-----" "項目Aの値","項目Bの値","項目Cの値1","項目Cの値2","項目Dの値" ・ ・ そこで、先にデータ部分の書き込みを行い、それぞれの項目のデータ件数の最大値を保持し、最後にデータ件数の最大値に合わせてヘッダ部分の書き込みを行おうと考えているのですが、 ファイルをopenしなおす方法以外で、 先に2行目以降の書き込みを行い、最後に1行目の書き込みを行う方法がわからなく困っております。 ご回答のほど、宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
データ量にもよりますが、一度すべてのデータをメモリ上(配列なりListなり)に保存し、最後まで読み込んでヘッダを書き出すための条件が揃ってからファイル出力してはいかがでしょうか?
その他の回答 (1)
- osu_neko09
- ベストアンサー率48% (56/115)
こんな風に、項目それぞれについて、個数が可変なのでしょうか? そうすると、1件目のデータも出力しなおしになるのではないですか? (ヘッダ部分)"項目A----","項目B----","項目C----","項目D----" (データ部分)"項目Aの値","項目Bの値","項目Bの値","項目Cの値","項目Dの値" (データ部分)"項目Aの値","項目Bの値","項目Cの値","項目Dの値","項目Dの値" (データ部分)"項目Aの値","項目Bの値","項目Cの値","項目Cの値","項目Dの値" データをすべて(順次アクセスで構いません)読み込んで、それぞれの項目のデータ件数の最大値を保持しておいて、もう一度データを読み込みなおして、ヘッダから順次出力すればいかがでしょうか?
お礼
質問内容が間違っておりました。申し訳ございません。 データ部分の個数は可変です。 データ部分をすべて書き込んだ後にヘッダ部分を書き込む方法があればと思い、質問させていただいたのですが、どうやらできないようなのでosu_neko09の回答方法も試してみたいと思います。 有難うございました。
お礼
お返事送れて申し訳ございません。 最後に1行目のヘッダ部分を書き出すということはできないのですね!? データ量はそこそこ多いのでパフォーマンスが心配ですが、 komi1341さんの回答方法を試してみたいと思います。 有難うございました。