这个问题已经发了一贴了,
但很遗憾,字节流和字符流的争论都没有结果。

解决方案 »

  1.   

    inputStream-----字节流-----8个位------0 到 255 
    inputStreamReader-----字符流-----16各位-----0 到 65535
    自己理解(本人喜欢把复杂的问题的答案简单化以便记忆)
    --------------------------------------------------------
    搞这个的时候看的东西
    http://blog.csdn.net/wujilin/archive/2008/09/19/2953283.aspx
    http://flysky.javaeye.com/blog/44292
      

  2.   

    严重声明:
    这是真正混淆的地方:另一贴中:
    引用 1 楼 sunxing007 的回复:
    不对! 
    一个字符是两个字节, 可以说字节比字符低级, 或者说字符是对字节的包装, 
    字节流可以读取任何文件, 可以说字符流可以做到的事情, 字节流都可以做到, 反之则不可以. 但字节流效率比较低下. 
    给你举个例子, 有一次我们有个需求, 要读取一个pdf文件, 我开始用字符流BufferedReader读取, 结果读出来的文件是乱码, 换成FileInputStream就可以了, 这是因为pdf文件是二进制文件, 那你一个字节一个字节的读取, 会破坏文件. 只… 
     这为兄弟恰好说反了FileInputStream不能读字节,FileReader是用来读字符的,你说的BufferedReader它是用来过滤FilReader,将转换过来的字符放在缓冲区里面,然后从缓冲区里面进行读取,随便提下:BufferedReader里面有个很好用的方法readLine(),一次读取一行字符.
      

  3.   

    计算机里最基本的单位是字节,按字节读肯定不会出问题的。也就是2进制格式,word也是属于字节流
    字符流可以一次读写两个字节,对于现在的32位64位计算机来说,效率会提高很多,但是常常会断章取意,认为所有的信息都是按16位来存储的,遇上非字符存储的,很容易会出错!我个人认为很有可能是高字节和低字节顺序的问题!或许用字符流连续读写两次文件就ok了!(存属猜想,未做实践证明)
      

  4.   

    多谢各位高手回答,我是新手,对字节和字符流看了几次书也没理解。今天略有理解。
    顺便问一下,这里很多人都是女头像。
    我认为编程高手中女性应该不多,是真的有这么多女的?
    还是由于搞编程的人压力大,所以很多人习惯用女性头像?
    因为我自己的GTALK也是用的梦露。
      

  5.   

    一个汉字,GBK编码是2个字节,UTF-8编码是三个字节如果你不确定编码类型,那么用字节处理最稳妥。
      

  6.   

    InputStream : int read()
         Reads the next byte of data from the input stream. The value byte is returned as an int in the range 0 to 255. InputStreamReader: int read() 
        Reads a single character.
      

  7.   

    似乎字符流在SOCKET传输的时候总是出问题。
      

  8.   

    InputStreamReader来把InputStream适配为Reader类的。
    InputStream是 针对byte(8位),而Reader是针对char(16位),要支持中文也必须得用16位的Reader。InputStream inStream = null;
    InputStreamReader reader = null;inStream = file.getContents();
    reader = new InputStreamReader(inStream);
      

  9.   

    1) File file = new File ("hello.txt"); 
    FileInputStream in=new FileInputStream(file); 
    2) File file = new File ("hello.txt"); 
    FileInputStream in=new FileInputStream(file); 
    InputStreamReader inReader=new InputStreamReader(in); 
    BufferedReader bufReader=new BufferedReader(inReader); 
    3) File file = new File ("hello.txt"); 
    FileReader fileReader=new FileReader(file); 
    BufferedReader bufReader=new BufferedReader(fileReader); 据说 这么用比较好
      

  10.   

    inputStream-----字节流-----8个位------0 到 255 
    inputStreamReader-----字符流-----16各位-----0 到 65535
      

  11.   

    InputStreamReader的构造方法 InputStreamReader(InputStream in) 。这里InputStream是一个抽象类。 http://www.shangxuetang.cn/html/wentijihe/200810/09-32.html
      

  12.   

    public abstract class InputStream
        返回 0 到 255 范围内的 int 字节值public class InputStreamReader
       InputStreamReader 是字节流通向字符流的桥梁