- PR -

StringInputStream

1
投稿者投稿内容
トリックスター
大ベテラン
会議室デビュー日: 2003/04/16
投稿数: 104
投稿日時: 2003-06-26 21:53
StringからReaderを生成するにはStringReaderを使えますが、
StringからInputStreamを生成するにはどうしたらよいのでしょうか?
トリックスター
大ベテラン
会議室デビュー日: 2003/04/16
投稿数: 104
投稿日時: 2003-06-26 22:30
自己レスポンスですが、

String string = "XXXXXXXX";
InputStream stream = new ByteArrayInputStream(string.getBytes());

とか、やるんでしょうか?
トリックスター
大ベテラン
会議室デビュー日: 2003/04/16
投稿数: 104
投稿日時: 2003-06-27 19:37
いろいろ調べていて、OutputStreamは、byte[]データをはきだす為にあり
Writerは、文字(char、String)をはきだす為にあるのだとわかりました。
つまり、今回の質問は的外れでした。すいません。

で、OutputStreamがバイトストリームでWriterが文字ストリームであれば、
WriterからOutputStreamが取得できてもよいような気がするのですが、そ
のようなことは可能でしょうか?
バイトストリームも文字ストリームも同じように扱いたいのです。
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2003-06-28 00:47
「同じように扱いたい」の意味は分かりませんが,Writerから OutputStreamを
取り出すのは無理でしょう。
Writerが必ずしも OutputStreamと関連しているとは限りません。
また、バイトストリームと文字ストリームはちがうものであり、エンコーディ
ングを指定して始めて対応させられるものですから。

でももし、単一ストリーム上で両者を混在させたいということなら、それなり
のクラスを作ることは可能です。 javax.servlet.ServletResponseの
getOutputStream(), getWriter()が参考になると思われます。
トリックスター
大ベテラン
会議室デビュー日: 2003/04/16
投稿数: 104
投稿日時: 2003-07-01 11:59
いろいろ話がとんで読みにくい質問にお答えいただき、ありがとうございました。

Reader/Writer、Input/OutputStreamの違いが理解できました。

今回、バイト配列も文字列も同様に送受信したかったのですが、
バイト配列は、ByteArrayOutputStream
文字列は、DataOutputStreamでラッピングすることにしました。
→ たぶん一般的なやり方

※以下、コーディングイメージ(コンパイルしてないので間違ってるかも)
class ByteArrayData extends PutData {
byte[] buffer;
void put(OutputStream out){
out.write(buffer);
:
}
}
class StringData extends PutData {
String buffer;
void put(OutputStream out){
new DataOutputStream(out).writeBytes(buffer);
:
}
}

ありがとうございました。
1

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