io流之转换流

本文介绍了如何利用转换流在字符流与字节流之间进行高效转换,具体通过实例展示了使用InputStreamReader和OutputStreamWriter实现键盘录入数据的读取和打印,同时遇到编码转换需求时的灵活应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转换流是字符流体系的成员。

转换流是字符流和字节流之间的桥梁。

InputStreamReader:将字节流转换成字符流

OutputStreamWriter:将字符流转换成字节流

什么时候使用转换流?

当涉及到编码转换时,通常使用转换流。

示例:

需求:

使用readLine()方法完成键盘录入一行数据的读取,并输入到控制台上

分析:

readLine()方法是字符流BufferedReader类中的方法,而键盘录入的read()方法是字节流InputStream的方法,此时就要用到转换流。

 

class StreamTrans{

public static voidmain(String args[]) throw IOException{

       BufferedReader bufr = newBufferedReader(new InputStreamReader(

              System.in));

       BufferedWriter bufw = new BufferedWriter(newOutputStreamWriter(

              System.out));

       String line = null;

while((line=bufr.readLine())!=null){

       if("over".equals(line))

              break;

       bufw.write(line.toUpperCase());

       bufw.newLine();

       bufw.flush();

              }

bufw.close();

bufr.close();

}

}

 

键盘录入数据,当录入数据后,就将该行数据进行打印,如果录入的数据是over,那么停止录入。

class ReadIn{

public static voidmain(){

       InputStream in = System.in;

       StringBuilder sb = new StringBuilder();

       while(true){

       int ch = in.read();

       if(ch=='\r')

              continue;

       if(ch=='\n'){

              String s = sb.toString();

              if("over".equals(s))

                     break;

       System.out.println(s.toUpperCase());

       sb.delete(0,sb.length());

       }else{

       sb.append((char)ch);

       }     

      

 

       }

       }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值