标准输入输出流、打印流、数据流
标准输入输出流、打印流、数据流作为了解知识。
标准输入、输出流
System.in和System.out分别代表了系统标准的输入和输出设备。默认的标准输入流为键盘、标准输出流为屏幕。
System.in是InputStream类型,而System.out是PrintStream,PrintStream是OutputStream的子类
重定向:通过System类的setIn,setOut方法对默认设备进行改变。
- public static void setIn(InputStream in)
- public static void setOut(PrintStream out)
练习:从键盘输入字符串,要求将读取到的整行字符串转成大写输出。然后继续进行输入操作,直至当输入“e”或者“exit”时,退出程序。
上述问题可以使用Scanner方式来完成(Scanner可以从键盘读取输入),或通过将System.in(字节流)转换为InputStreamReader(字符流),再读取字符。
方法一:
Scanner scanner = new Scanner(System.in);
System.out.println("please input some words:");
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
if ("e".equalsIgnoreCase(line) || "exit".equalsIgnoreCase(line)) {
break;
}
System.out.println(line.toUpperCase());
}
方法二:
InputStreamReader reader = new InputStreamReader(System.in);
System.out.println("Please input some words:");
try (BufferedReader bufferedReader = new BufferedReader(reader)) {
while (true) {
String ln = bufferedReader.readLine();
if ("e".equalsIgnoreCase(ln) || "exit".equalsIgnoreCase(ln)) { // 这样写可以防止空指针异常
break;
}
System.out.println(ln.toUpperCase());
}
} catch (IOException e) {
e.printStackTrace();
}
打印流
实现将基本数据类型的数据格式转化为字符串输出
打印流:PrintStream和PrintWriter
- 提供了一系列重载的print()和println()方法,用于多种数据类型的输出
- PrintStream和PrintWriter的输出不会抛出IOException异常
- PrintStream和PrintWriter有自动flush功能
- PrintStream 打印的所有字符都使用平台的默认字符编码转换为字节。在需要写入字符而不是写入字节的情况下,应该使用 PrintWriter 类。
- System.out返回的是PrintStream的实例
数据流
略