An InputStreamReader is a bridge from byte streams to character streams: It reads bytes and decodes them into characters using a specified charset.A BufferedReader can read text from a character-input stream, buffering characters so as to provide for the efficient reading of characters, arrays, and lines.

解决方案 »

  1.   

    BufferedReader:支持被缓冲的字符输入;当你想处理文本输入时,实际上是你唯一的选择;
    InputStreamReader:从输入流中读取字符串,自动在字节流和unicode字符串序列间转换。
      

  2.   

    他们都继承了 java.io.ReaderInputStreamReader 可以作为 byte 流 和 character 流 之间的一个接口
    An InputStreamReader is a bridge from byte streams to character streams: It reads bytes and translates them into characters according to a specified character encoding. The encoding that it uses may be specified by name, or the platform's default encoding may be accepted. BufferedReader 是一个带缓冲区的 reader
    其内部封装了许多 易用的方法
    比如你用 reader 只能一个字节一个字节的读
    而用 BufferedReader 你就可以一次性读取一行
    Read text from a character-input stream, buffering characters so as to provide for the efficient reading of characters, arrays, and lines.一个显而易见的区别就是 用 BufferedReader 复制一个 exe 文件
    那么新的 exe 将无法执行 因为 BufferedReader 读的是 character用 InputStreamReader 复制一个 exe 文件 则和原文件一样
    因为 InputStreamReader 读的是 byte所以可以根据不同的场合选用不同的 reader
      

  3.   

    Java在IO流库中使用了很典型的Decorater模式,仔细理解该模式对理解IO流库很有帮助
      

  4.   

    那请看该程序import java.io.*
    .....InputStreamReader reader=new InputStreamReader(System.in);
    BufferedReader input=new BufferedReader(reader);
    ......其中reader对象初始化给input对象,象“非法操作”兄所说的一个是Byte一个是char,如何相等?小弟我是极菜的初学者,多问点想搞懂些,麻烦各位了!
      

  5.   

    这不是 reader对象初始化给input对象
    应该看成 把一个 InputStreamReader 封装到一个 BufferedReader 里面正如 InputStreamReader 的文档说明中讲的一样
    它是 a bridge from byte streams to character streams: It reads bytes and translates them into characters according to a specified character encoding.封装起来之后 BufferedReader 就可以通过 InputStreamReader 来读取 byte
    具体是这样的:
    (byte) --> InputStreamReader --> (char) --> BufferedReader --> Your Programme同时 InputStreamReader 还能对 byte 进行编码 别忘了 Java 可是支持 Unicode 的哦
    之所以要封装 是因为 BufferedReader 提供了很多简便的方法 如 readLine() 等
    而 BufferedReader 又不能直接去读 byte 
    所以就让他们合作一下 :)