黑马程序员——读取键盘录入、读取转换流、写入转换流

一、读取键盘录入:

/system.out:对应的是标准输出设备,控制台。
system.in:对应的是标准输入设备,键盘。 
import java.io.*;
class ReadIn{
    public static void main(String[] args){
          InputStream in= System.in;
          int by=in.read();
          system.out.println(by);//例如本程序录入a,回车,则会打印出97,13,10,因为回车符是有\r\n组成
          in.close();//本程序不关也可以,因为程序结束,键盘录入也结束了,可通过control+C停止    
}
}

1、需求:通过键盘录入数据,当录入一行数据后,就将该行数据进行打印,如果录入的数据时over,那么停止录入。可通过将数据先存到临时缓冲区,读一个存一个,等读完了回车。

代码示例:
import java.io.*;
class ReadIn{
    public static void main(String[] args){
          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);
}         
}
}

二、读取转换流

通过上面的键盘录入一行数据并打印其大写,发现其实就是读一行数据的原理。也就是readline方法。那么,能不能直接使用readline方法来完成键盘录入的一行数据的读取呢?我们知道,readline方法是字符流BufferedReader类中的方法,而键盘录入的read方法是InputStream的方法,那么我们可以通过将字节流转换成字符流,在使用字符流缓冲区的readline方法。
InputStreamReader专门用于操作字节流的字符流对象,将字节流转换成字符流。在构造是接收一个字节流。
import java.io*;
class TranStreamDemo{
public static void main(String[] args) throws IOException
{
//获取键盘录入
System in=System.in;
//将字节流转换成字符流对象使用转换流。使用InputStreamReader
InputStreamReader isr=new InputStreamReader(in);
//为了提高效率,将字符串进行缓冲区技术高效操作,使用bufferedreader
BufferedReader bufr=new BufferedReader(isr);
 String line =null;
while(line=bufr.readLine()!=null){
  if("over".equals(line))
      break;
  system.out.println(line.toUpperCase());
}
burf.close();
}
}

三、写入转换流

InputStreamReader是字节转成字符的,而OutputStreamWriter是字符转换成字节的方法。可使用指定的charset将要写入流中的字符编码成字节,它使用的字符集可以由名称制定或显式给定,否则将接受平台默认的字符集。为了获得最高效率,可考虑将OutputStreamWriter包装到BufferedWriter中,以避免频繁调用转换器。例如:Writer out=new BufferedWriter(System.out));
import java.io*;
class TranStreamDemo{
public static void main(String[] args) throws IOException
{
//获取键盘录入最常见写法。
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
OutputStreamWriter osw=new OutputStreamWriter(System.out)
BufferedWriter bufw=new BufferedWriter(osw)
 String line =null;
while(line=bufr.readLine()!=null){
  if("over".equals(line))
      break;
  osw.write(line.toUpperCase());
  osw.flush()
}
burf.close();
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值