JAVA--IO:转换流

字符流

Reader   Writer

字符流缓冲区

BufferedReader   BufferedWriter

字节流

InputStream   OutputStream

字节流缓冲区

BufferedInputStream   BufferedOutputStream

转换流

InputStreamReader   OutputStreamWriter

 

案例:键盘录入输出

读取键盘录入

System.out:对应的是标准输出设备:控制台。

System.in:对应的是标准输入设备:键盘。

需求

通过键盘录入数据。

当录入一行字母数据后,就将该行数据大写形式进行打印。如果录入的数据是over,那么停止录入。

import java.io.*;
class ReadIn{
	public static void main(String[] args)throws IOException{
		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);
		}
		
		in.close();
	}
}

转换流:优化简写键盘录入输出

通过上述键盘录入一行数据并打印其大写案例,发现其实就是读一行数据的原理。也就是readLine()方法。

怎么直接使用readLine()方法来完成键盘录入一行数据的读取:

    readLine():字符流BufferedReader类中的方法。

    键盘录入的read()方法是字节流InputStream类中的方法。

解决方法:使用转换类将字节流转成字符流,再使用字符流相关方法。因此要使用以下转换流:

    InputStreamReader   OutputStreamWriter

import java.io.*;
class TransStreamDemo{
	public static void main(String[] args)throws IOException{
		
		/*// 获取键盘录入对象
		InputStream in=System.in;
		// 将字节流对象转成字符流对象,使用转换流:InputStreamReader
		InputStreamReader isr=new InputStreamReader(in);
		
		// 为了提高效率,将字符串进行缓冲区技术高效操作,使用BufferedReader
		BufferedReader bufr=new BufferedReader(isr);*/
		
		// 键盘录入最常见、最简洁写法
		BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
		
		/*// 键盘输出
		OutputStream out=System.out;
		OutputStreamWriter osw=new OutputStreamWriter(out);
		BufferedWriter bufw=new BufferedWriter(osw);*/
		
		// 键盘输出最常见、最简洁写法
	    BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(System.out));
			
		String line=null;
		while((line=bufr.readLine())!=null){
			if("over".equals(line))
				break;
			bufw.write(line.toUpperCase());
			bufw.newLine();
			bufw.flush();
		}
		
		bufr.close();
		bufw.close();
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值