读取键盘录入

2018-10-10  本文已影响0人  东风谷123Liter

字节流:

FileInputStream 
FileOutputStream
BufferedInputStream
BufferedOutputStream

字符流:

FileReader
FileWriter
BufferedReader
BufferedWriter

读取键盘录入:

System.out:对应的是标准输出设备,控制台
System.in: 对应的是标准输入设备,键盘

windows中的回车符:ASCII值

/r: 13
/n: 10

需求:

从键盘录入数据;
当录入一行数据后,就进行打印;
当录入数据over时,就停止录入。



按ctrl+C结束!直接输入-1是不能结束;
程序不关也是可以的。

import java.io.*;
public class inDemo {
     public static void main(String[] args) throws IOException{
           InputStream in = System.in;
           StringBuilder sb = new StringBuilder();
           while(true) {
                //read返回的是int类型;
                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
                     //记得转换为char型
                     sb.append((char)ch);
           }
     }
}

其实上面从键盘输入一行数据并打印大写,就是读取一行数据的方法。

能不能用readLine方法吗?

不能,readLine方法是BufferedReader类中的方法。

字节流要用这个方法怎么办???

有一个流转换的类,InputStreamReader。
它是Reader的一个子类;

import java.io.*;
public class IOStrBemo {
     public static void main(String[] args) throws IOException{
           InputStream in = System.in;
           //使用InputStramReader将字节流转换成字符流。
           InputStreamReader isr = new InputStreamReader(in);
           //为提高提高效率,将字符流存入缓冲区;使用BufferedReader类
           BufferedReader bffr =  new BufferedReader(isr);
           String line = null;
           while((line=bffr.readLine())!=null) {
                //记得写结束条件
                if("over".equals(line))
                     break;
                System.out.println(line.toUpperCase());
           }
     }
}
结果:

同时也有字符通向字节的桥梁:OutputStreamWriter

import java.io.*;
public class IOStrBemo {
     public static void main(String[] args) throws IOException{
           InputStream in = System.in;
           //使用InputStramReader将字节流转换成字符流。
           InputStreamReader isr = new InputStreamReader(in);
           //为提高提高效率,将字符流存入缓冲区;使用BufferedReader类
           BufferedReader bffr =  new BufferedReader(isr);
           OutputStream out = System.out;
           OutputStreamWriter os = new OutputStreamWriter(out);
           BufferedWriter bffw = new BufferedWriter(os);
           String line = null;
           while((line=bffr.readLine())!=null) {
                //记得写结束条件
                if("over".equals(line))
                     break;
                bffw.write(line.toUpperCase());
                bffw.newLine();
                bffw.flush();
           }
     }
}
结果:

优化写法:

BufferedWriter bffw = new BufferedWriter(new OutputStreamWriter(System.out));

需求变换:

1,源:键盘录入;
目的:控制台;
2,把键盘录入的数据存到文件中。
源:键盘;
目的:文件

BufferedWriter bffw =
    new BufferedWriter(new OutputStreamWriter(new FileOutputStream("out.txt")));

3,从文件中读取到控制台。
源:文件
目的:控制台

InputStream in = new FileInputStream("java.txt");
上一篇 下一篇

猜你喜欢

热点阅读