黑马程序员技术交流社区

标题: 字符流与字节流在使用时底层实现由啥区别? [打印本页]

作者: 王会涛    时间: 2014-11-9 20:58
标题: 字符流与字节流在使用时底层实现由啥区别?
两个程序1:FileReader fr = new FileReader("ming.txt");
          int ch = 0;
          while((ch = fr.read())!=-1 )
          {
             System.out.print((char)ch);
          }
        2:FileInputStream fis=new FileInputStream("ming.txt");
          byte[] b=new byte[1024];
          int ch = 0;
          while((ch = fr.read(b))!=-1 )
          {
             System.out.write(b,0,n);
          }
上网查询了下资料,这两个类的区别,FileReader处理的是字符(unicode 16位的 char),而FileInputStream处理的是字节(8位的byte).还说----最初Java是不支持对文本文件的处理的,为了弥补这个缺憾而引入了Reader和Writer两个类!
我不明白的是:
1:我上面两个例子程序处理的都是txt的文本文件,输出的结果是一样的,没看到FileInputStream不支持对
文本文件的区别啊?
作者: a8851625    时间: 2014-11-9 21:26
我们电脑的的文件都是由字节组成的。字符也是如此,FileInputStream用字节流所以他可以读取我们所有的文件,包括字符之类的。你的TXT是纯文本的。用字符流当然也能读。但是你用字符流的去读MP3或者AVI之类的文件又不行了。这是区别。
作者: 王会涛    时间: 2014-11-9 21:36
a8851625 发表于 2014-11-9 21:26
我们电脑的的文件都是由字节组成的。字符也是如此,FileInputStream用字节流所以他可以读取我们所有的文件 ...

解释的很清楚,谢了
作者: DamonZh    时间: 2014-11-9 22:29
字符流最终应该也是使用字节流来读取的,只是封装了而已。因为电脑上的所有文件都是0和1组成,我猜的:D




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2