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