一、简介
1.1、乱码问题
(1)第一次读取的文字内容格式为“UTF-8”
import java.io.BufferedReader;
import java.io.FileReader;
/**
* @Description: 看一个中文乱码的问题
* @Author: yangyb
* @Date:2022/1/8 20:34
* Version: 1.0
**/
public class CodeQuestion {
public static void main(String [] args) throws Exception {
//使用BufferReader读取一个文本文件,内容里面含有汉字
//第一次读取的时候,字符为默认的“UTF-8”
String srcFilePath="d:\\test\\code.txt";
BufferedReader bufferedReader=new BufferedReader(new FileReader(srcFilePath));
String content=bufferedReader.readLine();
//一定要关闭流
bufferedReader.close();
System.out.println(content);
}
}
可以看到没有出现乱码
(2)这一次我们将读取的文件内容格式设置为“GBK”
如何解决中文乱码的问题呢?
1.2、InputStreamReader
(1)InputStreamReader类的继承关系
(2)用转换流InputStreamReader解决上述乱码问题
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
/**
* @Description: TODO
* @Author: yangyb
* @Date:2022/1/8 21:13
* Version: 1.0
**/
public class InputStreamReader_ {
public static void main(String [] args) throws Exception {
//1、演示使用InputStreamReader解决中文乱码的问题
//2、要读取的文件的含有汉字的内容格式依然为“GBK”
String srcFilePath="d:\\test\\code.txt";
//把FileInputStream转成InputStreamReader
InputStreamReader isr=new InputStreamReader(new FileInputStream(srcFilePath),"GBK");
BufferedReader bufferedReader = new BufferedReader(isr);
String s = bufferedReader.readLine();
System.out.println(s);
//关闭外层流
bufferedReader.close();
}
}
1.3、OutputStreamWriter
(1)OutputStreamWriter类的继承关系
(2)转换流OutputStreamWriter应用示例
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
/**
* @Description: TODO
* @Author: yangyb
* @Date:2022/1/8 21:31
* Version: 1.0
**/
public class OutputStreamWriter_ {
public static void main(String [] args) throws Exception {
String targetFilePath="d:\\test\\c.txt";
OutputStreamWriter osw= new OutputStreamWriter(new FileOutputStream(targetFilePath),"GBK");
osw.write("yang羊");
//关闭流
osw.close();
}
}
可以看到保存成功了。