Java - 转换流--InputStreamReader ,OutputStreamWriter

BufferedReader 字符流,只能装饰字符流,不能装饰字节流。有个重要且好用的方法是readLine()整行读取字符。

但是InputStream是字节流,没有resdLine方法,那么字节流InputStream如何使用readLine方法呢???

如果能把字节流转换成字符流就可以使用BufferedReader装饰流。也就可以使用readLine方法。

 

把字节流转换成字符流,或者把字符流转为字节流    称为转换流: 

InputStreamReader(前缀是功能,后缀是体系):字节流通向字符流的桥梁他可以使用指定的charset读取字节流并将其解码为字符

OutputStreamWriter:字符流通向字节流的桥梁,他可以使用指定的charset将要写入流的字符编码成字节 

 

InputStream in=system.in;读取键盘输入的字节流,如果是读取一个中文,需要读两次才可以

InputStreamReader isr=new InputStreamReader(in);将字节流转换为字符流。如果是读一个中文,一次就可以读完

BufferedReader bufr=new BufferedReader(isr);

string line=null;

while((line=bufr.readLine())!=-1)

{

  if("over".equals(line))当读取到over就结束,否则转大写输出。

    break;

  system.out.println(line.toUpperCase())

}

 

OutputStreamWriter:

//读取键盘输入,转大写后输出到控制台

InputStream in=system.in;读取键盘输入的字节流,

InputStreamReader isr=new InputStreamReader(in);将字节流转换为字符流。

BufferedReader bufr=new BufferedReader(isr);

上面三句可以合为一句:

BufferedReader bufr=new BufferedReader(new InputStreamReader(system.in));

 

//输出到控制台

OutputStream out=system.out;

OutputStreamWriter osw=new OutputStreamWriter(out);

BufferedWriter bfw=new BufferedWriter(osw);

上面三句可以合为一句:

BufferedWriter bfw=new BufferedWriter(new OutputStreamWriter(system.out));

 

 

string line=null;

while((line=bufr.readLine())!=-1)

{

  if("over".equals(line))当读取到over就结束,否则转大写输出。

    break;

  bfw.write(line.toUpperCase());

  bfw.newLine();

  bfw.flush();

}

猜你喜欢

转载自blog.csdn.net/qq_40395278/article/details/81048676