javaの入出力

http://www.hellohiro.com/socket.htm
のはなしなんですけど。元々Javaの入出力はどうしてこんなにめんどいのかと思ってたのですが

BufferedReader in = new BufferedReader(
                              new InputStreamReader(
                              socket.getInputStream()));

socket.getInputStream -> InputStreamReader -> BufferedReader とどうしてこんなにラップする必要があるんだよ。socket.getInputStream.read**じゃダメなのか?

結論から言えば

  • socket.getInputStreamのストリームからはバイトデータをreadできる
  • InputStreamReaderはchar単位でreadできる
  • BufferedReaderはバッファ可能。String単位でreadできる

こんな感じでしょうか。分からないではないけど・・・。javaは簡単な言語なのに、ヘンなとこだけむずかしーんだよなあ。もう入出力は全部buffered I/Oでいーじゃん。だからJavaのI/O処理は面倒なんだよな。