转换流
一、基本介绍
InputStreamReader:Reader 的子类,可以将 InputStream (字节流) 包装成 (转换) Reader (字符流)
OutputStreamWriter:Writer 的子类,实现将 OutputStream (字节流) 包装成 Writer (字符流)
当处理纯文本数据时,如果使用字符流效率更高,并且可以有效解决中文问题,所以建议将字节流转换成字符流
可以在使用时指定编码格式 (比如 utf-8, gbk,gb2312, ISO8859-1 等)
应用场景
- 在读取文件时:指定读取文件内容的编码,解决文件乱码问题
- 在写入文件时:指定写入文件的编码
注意
- 两个类都提供了带有指定文件编码的构造器,需要传入一个字符串
- GBK 编码对应 txt 文件编码中的 ANSI 编码
二、InputStreamReader
应用:指定 gbk 编码读取文件内容
代码示例
java
public class newFile {
public static void main(String[] args) throws IOException {
String filePath = "C:\\Users\\jackson\\Desktop\\file.txt";
// 首先使用转换流指定编码读取文件内容
InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(filePath),"utf-8");
// 使用 BufferedReader 读取文件内容
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
// 一行流写法
// BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(filePath),"utf-8"););
System.out.println("文件的内容是:" + bufferedReader.readLine());
bufferedReader.close();
}
}代码分析
三、OutputStreamWriter
应用:指定 gbk 编码保存文件,并写入内容
java
public class newFile {
public static void main(String[] args) throws IOException {
String filePath = "C:\\Users\\jackson\\Desktop\\file.txt";
// 首先使用转换流指定写入文件的编码
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream(filePath),"utf-8");
// 使用 BufferedWriter 写入内容到文件中
BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);
// 一行流写法
// BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath),"utf-8"));
bufferedWriter.write("写入内容");
bufferedWriter.close();
}
}