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に変換メソッドがありました。
Commons IO
使い方はこうです。
return IOUtils.toString(inputStream, Charset.defaultCharset());
例外処理を除けば1行でした。中身は、InputStreamの内容を、StringBuilderWriterに流しこんで文字列を取り出すというもので、本質的な処理は先に載せたコードとほぼ同じでした。
ユーティリティクラス作りたくなったら、いったんApache Commons調べてみると既に良いものがあるかもしれないです。
コメント