1 标准输入输出流
System类中的字段:in,out。
它们各代表了系统标准的输入和输出设备。
默认输入设备是键盘,输出设备是显示器。
(1)public static final InputStream in;
“标准”输入流。此流已打开并准备提供输入数据。通常,此流对应于键盘输入或者由主机环境或用户指定的另一个输入源。
(2)public static final PrintStream out
“标准”输出流。此流已打开并准备接收输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。
package com.java.outputstream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
public class ReadKeyDemo {
public static void main(String[] args) throws IOException {
// 获取键盘录入的输入流
InputStream in = System.in;
int ch = 0;
while((ch = in.read()) != -1){
System.out.println(ch);
// 在控制台输入:a;返回结果:97 13 10
}
// 证明:上述13 10是由于换行"\r\n"得到的结果
PrintStream ps= System.out;
ps.println((int)'\r'); //结果:13
ps.println((int)'\n'); //结果:10
}
}
经过上述可知:ps.println((int)’\r’)等价于 System.out.println((int)’\r’);
2 需求:从键盘中录入的数据进行读取
package com.java.outputstream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
/*
* 需求:从键盘中录入的数据存储到文件中
* 思路:(1)键盘输入数据
* (2)将读到的数据保存到文件中
*/
public class ReaderKey02 {
public static void main(String[] args) throws IOException {
// 获取键盘录入的输入流
InputStream in = System.in;
// 由于键盘在控制台上输出的是字符,读取字符流。
InputStreamReader isr = new InputStreamReader(in);
// 想要一次读取一行,调用缓冲字符流
BufferedReader br = new BufferedReader(isr);
// 由于读取的次数不确定,需要在给定条件下停止读取控制台数据
String line = null;
while(true){
line = br.readLine();
// 在使用键盘录入的时候,需要定义结束标记,告诉程序什么时候结束
if(line.equals("over")){
break;//跳出当前循环
}
System.out.println(line);
}
}
}
3 总结
键盘录入有两种方法:
(1)Scanner(System.in)
(2)使用IO流
由于操作的本质是标准输出流System.in。这个流不需要关闭。上面三个流可以合并成一句话。如果不想使用Scanner()来获取键盘录入,就使用:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));