标准输入输出流、打印流、数据流

标准输入输出流、打印流、数据流作为了解知识。

标准输入、输出流

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的实例

数据流

Posted in: IO