转换流是能将字符流和字节流进行转换的一种方式
之前的文章中讲过,字符流就是字节流+特定的编码方式进行读取数据
假设我们想要将字节流以指定的编码方式转换成字符流,这时候就要用到转换流
在Java IO流中提供了两个转换流:InputStreamReader 和 OutputStreamWriter,这两个类都属于字符流。其中InputStreamReader将字节输入流转为字符输入流,继承自Reader。OutputStreamWriter是将字符输出流转为字节输出流,继承自Writer。
InputStreamReader
构造方法,参数分别指定的是一个基本流和字符集编码规则
InputStreamReader isd=new InputStreamReader(new FileInputStream("D:\\aaa\\ddd.txt"),"GBK");
int ch;
while((ch= isd.read())!=-1)
{
System.out.println((char)ch);
}
}
JDK11之后FIleRead方法也能指定编码规则进行读取数据。
OutputStreamWriter
它也是一个字符流,能使用跟字符流一样的方法
OutputStreamWriter osd=new OutputStreamWriter(new FileOutputStream("D:\\aaa\\eee.txt"),"GBK");
OutputStreamWriter osd1=new OutputStreamWriter(new FileOutputStream("D:\\aaa\\eee.txt",true),"utf-8");
osd.write("你好你好");
osd1.write("你好你好");
osd.close();
osd1.close();
}
JDK11之后FIleWriter方法也能指定编码规则进行读取数据。
不过此处编码指定不能用字符串,要用静态方法获取