InputStreamReader/OutputStreamWriter用来实现将字节流转化成字符流。比如,如下场景:
System.in是字节流对象,代表键盘的输入,如果我们想按行接收用户的输入时,就必须用到缓冲字符流BufferedReader特有的方法readLine(),但是经过观察会发现在创建BufferedReader的构造方法的参数必须是一个Reader对象,这时候我们的转换流InputStreamReader就派上用场了。
而System.out也是字节流对象,代表输出到显示器,按行读取用户的输入后,并且要将读取的一行字符串直接显示到控制台,就需要用到字符流的write(String str)方法,所以我们要使用OutputStreamWriter将字节流转化为字符流。
【示例】
import java.io.*;
/*
转换流:InputStreamReader OutStreamWriter
1、以字符流的形式操作字节流
2、制定字符集
*/
public class TestConvert {
public static void main(String[] args) {
//操作System.in和System.out
try(BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(System.out));){
//循环获取键盘的输入(exit退出),输出此内容
String msg="";
while(!msg.equals("exit")){
msg=reader.readLine();//循环获取
writer.write(msg);//循环输出
writer.newLine();
writer.flush();//强制刷新
}
}catch(IOException e){
System.out.println("操作异常");
}
}
}
【运行结果】