- PR -

DataInputStreamによるデータ入力ストリーム読込について

1
投稿者投稿内容
ひろ
ベテラン
会議室デビュー日: 2003/12/26
投稿数: 97
投稿日時: 2006-10-02 12:06
現在Javaの入出力ストリームについて勉強中で,以下について悩んでおります。

------------------------------------------------------------------------------------
//OutputStreamWriter
OutputStreamWriter outs = new OutputStreamWriter(response.getOutputStream(),"EUC_JP");
outs.write("hftxt=" + hftxt);
//DataInputStream
dis = new DataInputStream(getInputStream());
byte res = dis.readBytes();
------------------------------------------------------------------------------------

上記の様なソースにて,書き込んだストリームの中身をDataInputStreamにて参照したいのですが
responseで書き込んだ内容を参照するにはどのようにすれば良いのでしょうか。
google等で検索したところ,FileInputStreamを用いてfileに入出力する様なサンプルはいくつか
見つけたのですが,分かりませんでした。

初歩的な質問で申し訳ありません。ご教授お願い致します。

nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2006-10-02 13:01
いまひとつやりたいことが分からないのですが、
DataInputStreamからデータを読み込んで
response.getOutputStream()で取得したOutputStreamに
書き出したいのですか?

それともOutputStreamに書き出したデータを
別のOutputStreamに書き出したいという話ですか?
ひろ
ベテラン
会議室デビュー日: 2003/12/26
投稿数: 97
投稿日時: 2006-10-02 13:10
分かり辛くて申し訳ありません。
OutputStreamに書き出したデータの内容を,ログに出力したいのが目的です。

--------------------------------------------------------------------
//OutputStreamWriter
OutputStreamWriter outs = new OutputStreamWriter(response.getOutputStream(),"EUC_JP");
outs.write("hftxt=" + hftxt);
//DataInputStream
dis = new DataInputStream(getInputStream());
byte res = dis.readBytes();
system.out.plintln("res = " + res);
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2006-10-02 13:48
Jakarta Commons IOTeeOutputStreamが使えそうです。
branch側に記録先のストリームを指定すれば一緒に出力できます。
小僧
ぬし
会議室デビュー日: 2002/08/14
投稿数: 526
投稿日時: 2006-10-02 14:55
Java1.5を使われていてXMLで出力されても良いのでしたら、
標準ライブラリのXMLEncoderで、オブジェクトの文字列
表現をストリームに出力することができますよ。

http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/index.html


未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2006-10-02 15:10
なんでログを表示したいなんて思ったのだろうか。作ったプログラムがうまく動かなかったからかな。

気になった点。DataInputStream に readBytes なんてメソッドはない。仮に readByte (単数形) のことだったとしても、おそらく使用方法の誤り。DataInputStream は Java のプリミティブ型を転送するためのものなので、フツーは DataOutputStream で書き込んだものしか読めない。DataOutputStream#writeByte() したものを DataInputStream#readByte() する。この方法で読み書きされるのは Java の byte 型だが、実際のストリーム上の表現はもっと冗長になっている。

もし単純に 1バイトをストリームから取り出したいのなら、InputStream#read() を使う。
ひろ
ベテラン
会議室デビュー日: 2003/12/26
投稿数: 97
投稿日時: 2006-10-02 15:55
ご返信ありがとうございます。

結局,DataOutputStreamでwriteする中身をメソッド化して,
各write,ログ出力ロジックからそのメソッドを呼出すことになりました。
responseの中を見ることができればまた別な方法があるのですが・・
(クライアント側でDataInputStreamなら分かるが,サーバサイドで
上記処理を実行するのは無駄がある(サーバが2台あるなら別だが))

お騒がせして大変申し訳ありませんでした。。







[ メッセージ編集済み 編集者: ひろ 編集日時 2006-10-02 15:58 ]
1

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