- - PR -
ファイル入力時の項目切出しについて
«前のページへ
1|2|3
| 投稿者 | 投稿内容 | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2002-05-27 12:09
固定欄の書式 I/O は無いですが、自由欄のがあります。
*Tokenizer カンマ区切りを自分で作り 処理もできるのでは。 sacn , unpack はないですし。 お金を出せば、レガシーデータとの マッピング/バインディング をするのは、手に入るのですが。 | ||||||||||||||||||||
|
投稿日時: 2002-05-27 13:10
たいきさん:
> java は初学で,どうも説明が拙くなってしまい,申し訳ありません. たいき晩成ってことで、がんばってください。 > 私また舌足らずでした.バッチの中間ファイルを目視確認したり, > sort ユーティリティを用いたりしたいので,テキストファイルを > 作りたいのです. 非Javaアプリケーションのバッチということでよろしいでしょうか? すべてJavaだけのアプリケーションであれば、中間ファイルもシリアライズで行う方がJavaの利点が生かせますから。 > char 型だったらパディングとか機種依存じゃないですよね.これも勘違い? しょむさんが書いておられるように、Java VM上でのchar型は2バイト整数で、Windows上のC/C++とはバイトオーダーが違うため直にはやり取りできません。 ただ、今回のように数字のみの文字列なら、UTF-8に変換されたときに1バイトとなるので問題ありませんけど。 それから、C/C++の場合、char型のみであっても配列になると機種依存する場合がありますから、要注意です。 > java の serialize は本で読んだのですが,writeObject で吐き出すところは > 確認したのですが,これだと固定長(あるいは区切り文字あり可変長)テキストファイル > って作れるのでしょうか. 私の書き込みにもあるとおり、JavaのシリアライズはあくまでもJavaアプリ同士でデータを読み書きするための仕組みと考えるべきでしょう。 どうしても固定長フォーマットを読み書きしなければならないのなら、それ用のクラスを作るべきでしょう。 > > java.io.*に習って固定長フォーマットを読み書きする > > Reader/Writerを作った方が汎用性がでる > と言われている方法とはどれのことを指しているのでしょう? しょむさんが書かれたソースが該当します。 | ||||||||||||||||||||
|
投稿日時: 2002-05-27 15:04
しょむさん、へげもんさん、MMXさん、コメントありがとうございます。
私もMMXさんと同意見です。
うーん。固定長フォーマットは各クラスのデータ構造によって定義されるわけですよね。その場合、固定長フォーマットの文字列→オブジェクトへの変換はその対象のクラス・コンストラクタが行うべきだと思うのですが。 つまり、しょむさんの
言われる解析器を作るのではなく、
こんな感じに各クラスごとに文字列からインスタンスを返すstaticメソッドもしくは、シンプルにコンストラクタで、
オブジェクトを文字列から作成・初期化して、書き出しの場合はtoString()をオーバーライトしてtoString()から返される文字列をファイルに書き込むようにするのはどうなんでしょうか? この方がわざわざ他にクラスを作る必要がないのでシンプルで簡単かなと思います。また、文字列フォーマットもクラスで管理できますよね。 どうでしょうか? #う〜、なんか怒られそう・・・。 | ||||||||||||||||||||
|
投稿日時: 2002-05-27 18:51
クラスなりオブジェクトなりというのは、初期化がメインではなくて、
それの提供する抽象的な機能が重要なのですから、 「固定文字列フォーマット」という初期化用データ構造にべたべたのクラスって どうなのかなぁという気分です。 もちろん、そのオブジェクトが「固定文字列フォーマット」に密接に関係している (たとえば、ホスト電文をそのままBeanやHashtableに相互変換するようなもの) であれば、「固定文字列フォーマット」と「その定義/マッピング」を与えて初期化する、 というのは納得いくんです。 クラスが少ない方がシンプルというのはナニでしょう。 共通化できる機能は別に切り出すというのがOOの基本では。 | ||||||||||||||||||||
|
投稿日時: 2002-05-27 19:10
なるほど。納得です。
確かに。まぁ、でも私の経験(といってもしょぼいですけど)で言えば共通化できる機能を最初からたくさん割り出しても使わない事が多いような・・・。それにリファクタリングもあることですし、共通機能の切り出しは後からでもできますよね。(「できる」と「する」は別ですけどね。) 勉強になりました。m(_ _)m [ メッセージ編集済み 編集者: H2 編集日時 2002-05-27 19:12 ] | ||||||||||||||||||||
«前のページへ
1|2|3
