1 package com.yyq;
2 import java.io.*;
3 /*
4 * 字节流 FileInputStream
5 * FileOutputStream
6 * BufferedInputStream
7 * BufferedOutPutStream
8 */
9 /*
10 * 读取键盘录入:
11 * system.out: 对应的是标准的输出设备,控制台
12 * system.in: 对应的是标准的输入设备,键盘
13 */
14 /*
15 * 需求: 通过键盘录入数据,录入一行数据打印,
16 * 录入over 停止。
17 * 其实就是readLine方法,直接使用readLine方法
18 * 来完成键盘录入的一行数据的读取
19 * readLine 是 BufferedReader 类的方法(字符流)
20 * 而键盘录入的方法是InputStream的方法 (字节流)
21 * 能不能将字节流转成字符流再使用字符流缓冲区中的方法呢??
22 * 转换流 : 两个流
23 * 在字符流体系中
24 * InputStreamReader 将字节流转换成字符流(字节流通向字符流的桥梁)
25 * 通过它能将字节流变成字符流
26 * (将字节流转换成字符流)
27 * 1. 获取键盘录入对象
28 * 2.将字节流对象转换成字符流对象,(字符流的缓冲区 是用来装饰的)
29 * InputStreamReader isr = new InputStreamReader(in);
30 * 3.为了提高效率,将字符串进行缓冲区技术高效操作,使用bufferedreader
31 * BufferedReader bufr = new BufferedReader(isr);
32 */
33 public class TransStreamDemo {
34
35 public static void main(String[] args) throws IOException {
36 // TODO Auto-generated method stub
37 //System.in 是字节流 对应的类型是inputStream
38 InputStream in = System.in;
39 BufferedReader fr = new BufferedReader(new InputStreamReader(System.in));
40 while(true){
41 String line = fr.readLine();
42 if(line.equals("over")){
43 break;
44 }
45 System.out.println(line);
46 }
47 // 此处的read 方法是一个阻塞式方法,等待我的键盘录入
48 // 被提升 这是键盘录入
49 /* StringBuilder sb = new StringBuilder();
50 while(true){
51 int ch = in.read();
52 if(ch =='\r'){
53 continue;
54 }
55 if(ch=='\n'){
56 String s = sb.toString();
57 if("over".equals(s)){
58 break;
59 }
60 System.out.println(s.toUpperCase());
61 sb.delete(0,sb.length());
62 }
63 else{
64 sb.append((char)ch);
65 }
66 }*/
67 }
68
69 private static String InputStreamReader(InputStream in) {
70 // TODO Auto-generated method stub
71 return null;
72 }
73
74 }