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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 爽朗的菜籽 中级黑马   /  2014-9-23 19:45  /  748 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  文件复制 可以用 FileReader和FileWriter 来操作,那转换流也可以 有什么区别么,而且看起来的话,转换流的代码很繁琐,直接用FileReader和FileWriter不就行了么

2 个回复

倒序浏览
FileReader是InputStreanReader的子类,构造方法假定使用系统默认的字符编码和默认字节缓冲区大小
最大的区别就在这个默认的字符编码,我们知道文件存储在硬盘上是以二进制形式处理的,这个二进制表示的是什么呢?
这个字符在字符集中的位置,就好像我给你一本字典(假设该字典每一页只有一个字),然后给你一个数字,你查字典就知道我给你的是什么字了,这样每个字符就转换为了数字,内容就极大减少了,传输方便,存储节约空间
但是这样有一个问题,我们两个人必须使用同一个字典,否则我使用《辞海》,你使用《牛津大辞典》,那沟通起来就是牛头不对马嘴了,所以给你一个二进制要转换为字符,那么必须使用正确的字典才能得到正确的结果
InputStreamReader是可以指定字符集,而FileReader是使用默认的字符集
比如,你台湾的朋友给你传了一份文本文件,在他的电脑上默认使用Big-5编码,而我们的电脑默认是GBK,这个时候使用FileReader就得不到指定的结果,则必须使用如下方式:
  1. InputStreamReader reader = new InputStreamReader(new FileInputStream("1.txt"), "Big5");
复制代码

回复 使用道具 举报 1 0
转换流有个特点就是可以定义编码表
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马