InputStreamReader和FileReader的一个区别

处理txt文本时,因为涉及到GBK和UTF8两种编码,所以在使用输入流时是个很头疼的问题

因为FileReader用起来很方便,所以开始有这么一种想法:先按照GBK格式读入字符流,然后转码,也就是

line=new String(line.getBytes("GBK"),"UTF-8");

事实上这种方式并不理想,有的时候会出现缺失字符的现象。所以建议涉及编码的文本不要直接用FileReader

InputStreamReader因为可以修改编码格式,所以改它就OK了。

InputStreamReader fr=new InputStreamReader(new FileInputStream(file),"UTF-8");
BufferedReader bufferedReader=new BufferedReader(fr);

封装起来用的都是BufferedReader,使用时和封装FileReader无差。

此外,建议用GBK,因为使用GB2312时一部分编码会会识别错误。

你可能感兴趣的:(InputStreamReader和FileReader的一个区别)