0
点赞
收藏
分享

微信扫一扫

FileReader读文件乱码

FileReader属于字符流,是读取字符文件的便捷类。其继承自InputStreamReader,后者是将字节流转换为字符流的的桥梁,即将字节信息转换为字符信息。

实际上, FileReader在类内部实现过程中也是利用了InputStreamReader完成字节流到字符流的转化,只不过转化时采用的字符集为系统默认的字符集。

如果文件保存时的编码设定为UTF-8, 那么在中文操作系统使用 FileReader时就会发生乱码,因为中文操作系统平台的默认字符集为GBK。

解决该问题的办法是,放弃使用FileReader,改用InputStreamReader,在获取InputStreamReader对象时,显示指定合适的字符集。

使用指定字符集读取文件的示例代码如下:

public static void testInputStreamReader(){

FileInputStream fis = new FileInputStream("C:\\b.txt");
InputStreamReader isr = new InputStreamReader(fis,"UTF-8");
BufferedReader br = new BufferedReader(isr);

String s = null;
while((s = br.readLine()) != null){
System.out.println(s);
}
br.close();
isr.close();
fis.close();
}


举报

相关推荐

0 条评论