键盘的录入和转换流

读取一个键盘录入的数据,并打入在控制台上。

键盘本身就是一个标准的输入设备
对于java而言,对于这种输入设备都有对应的对象。

public class Io23_1 {
        public static void main(String[] args) throws IOException {
                readKey();
            }
/*      这个阻塞的意思就是说: 
 * 程序一直停在read()方法这里,等待数据。
 * 没有数据就不继续往下执行,直到得到数据
*/
        private static void readKey() throws IOException {
            InputStream in=System.in;
            int ch=in.read();  //阻塞式方法
            System.out.println(ch);
            int ch1=in.read();  //阻塞式方法
            System.out.println(ch1);
            int ch2=in.read();  //阻塞式方法
            System.out.println(ch2);

            /*
             * 13  \n
            *   10  \r  回车符
             * */
            //in.close();

            //InputStream in=System.in; 这个流只有一个,随着系统的出现而出现。
            //系统的消失而消失(close()不使用也是可以的,会随着系统的消失而关闭)。
            //上面关啦,下面也创建不了。因为只有一个。
/*          InputStream in2=System.in;
            in2.read();*/
        }


}

IO流(读取键盘录入)

public class Io24_1 {
    public static void main(String[] args) throws IOException {
        readKey2();
    }

    public static void readKey2() throws IOException{
        /*
         * 获取用户键盘录入的数据,
         * 并将数据变成大写显示在控制台上,
         * 如果用户输入的是over,结束键盘录入
         * 
         * 
         * 思路:
         * 1,因为键盘录入只读取一个字节,要判断是否是over,需要将读取到的字节转换为字符串。
         * 
         * 2.那就需要一个容器,StringBuilder
         * 
         * 3,在用户回车之前将录入的数据变成字符串判断即可。
         * */

        //1.创建容器
        StringBuilder sb=new StringBuilder();

        //2.获取键盘读取流
        InputStream in=System.in;

        //3.定义变量记录读取到的字节,并循环获取
        int ch=0;
        while((ch=in.read())!=-1){

            //在存储之前需要判断是否为换行标记,因为换行标记不存储
            if(ch=='\r')
                continue;
            if(ch=='\n'){
                String temp=sb.toString();
                if("over".equals(temp)){
                    break;

                }
                System.out.println(temp.toUpperCase());
                sb.delete(0, sb.length());
            }
            else{
                //将读取到的字节存储到StringBuilder中。
                sb.append((char)ch);
            }
        }
    }
}

转换流

public class Io25_1 {
    public static void main(String[] args) throws IOException {
        //字节流
        InputStream in=System.in;
        //将字节转换成字符的桥梁。转换流  。解码
        InputStreamReader isr=new InputStreamReader(in);//字符流

        //对字符流进行高效装饰
        BufferedReader bufr=new BufferedReader(isr);//缓冲区






        OutputStream out=System.out;   //字节流,字节数据
        //字节转换字符的桥梁。编码   
        OutputStreamWriter osw=new OutputStreamWriter(out);

        BufferedWriter bufw=new BufferedWriter(osw);  
        String line=null;
        while((line=bufr.readLine())!=null){
            if("over".equals(line)){
                break;
            }
            //System.out.println(line.toUpperCase());

/*          osw.write(line.toUpperCase()+"\r\n");
            osw.flush();*/
            bufw.write(line.toUpperCase());  //将字符数据用缓冲区对象将数据写入到缓冲区,目的地是osw
            bufw.newLine();
            bufw.flush();

        }

    }
}


//案例2
public class Io25_2 {
    public static void main(String[] args) throws IOException {
        BufferedReader  bufr=new BufferedReader(new InputStreamReader(System.in));

        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();

        }
    }
}

转换流-需求演示

    public class Io26_1 {
        public static void main(String[] args) throws IOException {
            demo3();
}

        public static void demo1() throws IOException{

            //把控制台输入的内容,写入到一个文件中去
        /*  InputStream in=System.in;
            InputStreamReader sr=new InputStreamReader(in);*/
        BufferedReader  bufr=new BufferedReader(new InputStreamReader(System.in));

/*      FileOutputStream os=new FileOutputStream("E:\\Io\\a.txt");
        OutputStreamWriter sw=new OutputStreamWriter(os);*/

            BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("E:\\Io\\a.txt")));

            String line=null;
            while((line=bufr.readLine())!=null){
                if("over".equals(line)){
                    break;
                }

                bufw.write(line.toUpperCase());
                bufw.newLine();
                bufw.flush();
        }
        }

        public static void demo2() throws IOException{

            //将一个文本文件,读取到控制台显示
            BufferedReader  bufr=new BufferedReader(new InputStreamReader(new FileInputStream("E:\\Io\\a.txt")));

            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();
        }

}

        public  static void demo3() throws IOException{

            //将一个文本文件内容复制到另外一个文本文件中
            BufferedReader  bufr=new BufferedReader(new InputStreamReader(new FileInputStream("E:\\Io\\a.txt")));

            BufferedWriter bufw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("E:\\Io\\b.txt")));

            String line=null;
            while((line=bufr.readLine())!=null){
                if("over".equals(line)){
                    break;
                }

                bufw.write(line.toUpperCase());
                bufw.newLine();
                bufw.flush();
        }
        }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值