A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

两个程序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不支持对
文本文件的区别啊?

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

3 个回复

倒序浏览
我们电脑的的文件都是由字节组成的。字符也是如此,FileInputStream用字节流所以他可以读取我们所有的文件,包括字符之类的。你的TXT是纯文本的。用字符流当然也能读。但是你用字符流的去读MP3或者AVI之类的文件又不行了。这是区别。

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
a8851625 发表于 2014-11-9 21:26
我们电脑的的文件都是由字节组成的。字符也是如此,FileInputStream用字节流所以他可以读取我们所有的文件 ...

解释的很清楚,谢了
回复 使用道具 举报
字符流最终应该也是使用字节流来读取的,只是封装了而已。因为电脑上的所有文件都是0和1组成,我猜的:D
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马