对于IO流中的转换流,顾名思义,就是将字符流转换成字节流或者是将字节流转换成字符流的对象。
那么有时候我们得到的是一个字符流,但是我们又需要进行一些计算之类的,或者我们得到的是一个字节流,但是我们又需要进行一些匹配或者是其他使用的时候,我们就可能会用到转换流,所以转换流对于我们来说是非常方便实用的。
既然转换刘是将字符流转换成字节流或者是将字节流转换成字符流的对象,所以我们就分别用OutputStreamWriter和InputStreamReader来表示。
首先来说说InputStreamReader字节流转换成字符流:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class Demo {
public static void main(String[] args) throws IOException{
//使用输入设备输入字符流
InputStream ins = System.in;
//将输入的字符流信息转换成字节流
InputStreamReader insr = new InputStreamReader(ins);
//将转换后的数据存储到缓冲区
BufferedReader bufr = new BufferedReader(insr);
String str = null;
while((str=bufr.readLine())!=null){
System.out.println(str.toUpperCase());//toUpperCase()使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
}
bufr.close();
}
}
然后来讲讲OutputStreamWriter字节流转换成字符流
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
public class Demo {
public static void main(String[] args) throws IOException{
InputStream ins = System.in;
InputStreamReader insr = new InputStreamReader(ins);
BufferedReader bufr = new BufferedReader(insr);
OutputStream outs = System.out;
OutputStreamWriter outsw = new OutputStreamWriter(outs);
BufferedWriter bufw = new BufferedWriter(outsw);
String line = null;
while((line=bufr.readLine())!=null){
bufw.write(line.toUpperCase());
bufw.newLine();
bufw.flush();
}
bufr.close();
bufw.close();
}
}
精简一下:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Demo {
public static void main(String[] args) throws IOException{
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
String line = null;
while((line=bufr.readLine())!=null){
bufw.write(line.toUpperCase());
bufw.newLine();
bufw.flush();
}
bufr.close();
bufw.close();
}
}