转换流
- 解决编码格式不统一,出现乱码问题
- idea默认utf-8,Windows系统中文默认GBK,如,文件默认保存编码格式为GBK,在FileReader时会报错
InputStreamReader
-
java.lang.Object
继承者 java.io.Reader
继承者 java.io.InputStreamReader
因此拥有Reader的共性方法 -
是FileReader的父类
-
InputStreamReader读InputStream送过来的字节时,会查询idea默认码表UTF-8,也可以查询指定的编码表,进行解码。
-
构造方法:
- InputStreamReader(InputStream in)
创建一个使用默认字符集的 InputStreamReader。 - InputStreamReader(InputStream in, String charsetName)
创建使用指定字符集的 InputStreamReader。
- InputStreamReader(InputStream in)
package convertedStream;
import java.io.*;
public class converted {
public static void main(String[] args) throws IOException {
//1.创建转换流,绑定输入文件,并指定编码格式
InputStreamReader inre = new InputStreamReader(new FileInputStream("b.txt"),"gbk");
//2.读入内存中
char[] chars = new char[1024];
int len = 0;
while((len =inre.read(chars)) != -1){
System.out.println(chars);
}
//3.释放资源
inre.close();
}
}
OutputStreamWriter
- java.lang.Object
继承者 java.io.Writer
继承者 java.io.OutputStreamWriter
因此拥有Writer的共性方法 - 是FileWriter的父类
- OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。编码过程。
- 构造方法:
- OutputStreamWriter(OutputStream out)
创建使用默认字符编码的 OutputStreamWriter。 - OutputStreamWriter(OutputStream out, String charsetName)
创建使用指定字符集的 OutputStreamWriter。
String charsetName:是编码表名称,不区分大小写,常用的有utf-8/GBK/。。。
不指定默认使用utf-8
- OutputStreamWriter(OutputStream out)
package convertedStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
public class converted {
public static void main(String[] args) throws IOException {
//1.创建转换流,绑定输出对象
OutputStreamWriter otw = new OutputStreamWriter(new FileOutputStream("b.txt"),"gbk");
//2.默认会以utf-8写入,OutputStreamWriter - FileOutputStream - 写入
otw.write("你好呀");
//3.释放资源
otw.close();
}
}