硬盘中存在文件d://demo.txt,内容如下
你好
123
helloworld
你好世界
使用BufferedReader字符流读取
@Test
public void test21() throws IOException {
BufferedReader br = new BufferedReader(new FileReader("d://demo.txt"));
String str = null;
while ((str = br.readLine()) != null) {
System.out.println(str);
}
br.close();
}
结果,发现中文乱码
���
123
helloworld
�������
这是因为我们的eclipse工作空间是utf-8编码格式的,使用FileReader默认是按照工作空间的编码集读取的,而文件在硬盘上存储的格式是gbk(简体中文Windows操作系统中ANSI编码相当于gbk),所以导致乱码。
那么我们只要把eclipse工作空间的编码集改为gbk就好了,但是一般开发中不这么做,既然文件的编码格式是gbk,那么我们能不能使用gbk编码集读取呢?答案是可以的,就是使用FileReader的父类InputStreamReader,可以指定编码集
@Test
public void test21() throws IOException {
// BufferedReader br = new BufferedReader(new FileReader("d://demo.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("d://demo.txt"), "gbk"));
String str = null;
while ((str = br.readLine()) != null) {
System.out.println(str);
}
br.close();
}
结果如下
你好
123
helloworld
你好世界