InputStreamをStringに変換するなら、Commons IOで一発。

Javaのデータの受け渡しの界面には、InputStream、OutputStreamを使っていることが多くて、これは統一されていて便利なんですが、変換するのが面倒なこともあります。

InputStreamからStringを取り出すのが面倒

実際にInputStreamからStringに変換するコードを検索してみると、なんだか難しいコードが出てきます。

BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
StringBuilder sb = new StringBuilder();
char[] b = new char[1024];
int line;
while (0 <= (line = reader.read(b))) {
    sb.append(b, 0, line);
}
return sb.toString();

InputStreamをStringに変換する
これはなかなか覚えられないし、いちいち書いていたらソースコードが膨大になってしまいます。

Commons IOに変換メソッドがあった

調べてみたら、Apache CommonsのCommons IOに変換メソッドがありました。
スクリーンショット 2013-08-05 19.33.31
Commons IO
使い方はこうです。

return IOUtils.toString(inputStream, Charset.defaultCharset());

例外処理を除けば1行でした。中身は、InputStreamの内容を、StringBuilderWriterに流しこんで文字列を取り出すというもので、本質的な処理は先に載せたコードとほぼ同じでした。
ユーティリティクラス作りたくなったら、いったんApache Commons調べてみると既に良いものがあるかもしれないです。

コメント

タイトルとURLをコピーしました