- - PR -
StringInputStream
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2003-06-26 21:53
StringからReaderを生成するにはStringReaderを使えますが、
StringからInputStreamを生成するにはどうしたらよいのでしょうか? |
|
投稿日時: 2003-06-26 22:30
自己レスポンスですが、
String string = "XXXXXXXX"; InputStream stream = new ByteArrayInputStream(string.getBytes()); とか、やるんでしょうか? |
|
投稿日時: 2003-06-27 19:37
いろいろ調べていて、OutputStreamは、byte[]データをはきだす為にあり
Writerは、文字(char、String)をはきだす為にあるのだとわかりました。 つまり、今回の質問は的外れでした。すいません。 で、OutputStreamがバイトストリームでWriterが文字ストリームであれば、 WriterからOutputStreamが取得できてもよいような気がするのですが、そ のようなことは可能でしょうか? バイトストリームも文字ストリームも同じように扱いたいのです。 |
|
投稿日時: 2003-06-28 00:47
「同じように扱いたい」の意味は分かりませんが,Writerから OutputStreamを
取り出すのは無理でしょう。 Writerが必ずしも OutputStreamと関連しているとは限りません。 また、バイトストリームと文字ストリームはちがうものであり、エンコーディ ングを指定して始めて対応させられるものですから。 でももし、単一ストリーム上で両者を混在させたいということなら、それなり のクラスを作ることは可能です。 javax.servlet.ServletResponseの getOutputStream(), getWriter()が参考になると思われます。 |
|
投稿日時: 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
