Flujo IO-flujo de impresión

Descripción general:

En todo el paquete IO, el flujo de impresión es una clase conveniente para generar información, que incluye principalmente el flujo de impresión de bytes (PrintStream) y el flujo de impresión de caracteres (PrintWriter). El flujo de impresión proporciona una función de impresión muy conveniente que puede imprimir cualquier tipo de datos, como decimales, enteros, cadenas, tipos booleanos, etc.

1. Clase PrintStream

 ¿Por qué tener la clase PrintStream?

En el pasado, necesitaba usar OutputStream al imprimir información, pero de esta manera, sería muy problemático generar todos los datos, String——>byte[], pero la salida se puede realizar convenientemente en el flujo de impresión de bytes.

Ventajas de la clase PrintStream

PrintStream proporciona funciones mejoradas basadas en OutputStream, que pueden generar cómodamente representaciones formateadas de varios tipos de datos (no limitados a tipos de bytes).

1.1 Método de construcción

0f4720c58a664216b4c7151cd74af145.png

 En el constructor definido en PrintStream, podemos encontrar claramente que hay un constructor que puede recibir directamente una instancia de la clase OutputStream. Esto se debe a que, en comparación con OutputStream, PrintStream puede generar datos de manera más conveniente, que es como reempaquetar OutputStream. salida más conveniente.

1.2 Métodos comunes

Este método está sobrecargado muchas veces y puede generar datos arbitrarios.

impresión pública vacía (Tipo x);

Este método se ha sobrecargado muchas veces y puede generar datos arbitrarios y luego ajustarlos.

println vacío público (Tipo x);

1.3 Escribir datos en el archivo

[Ejemplo] Escriba los datos especificados en el archivo.

clase pública PrintStreamDemo {

   public static void main (String[] args) lanza FileNotFoundException {

      //Crea un objeto de flujo de impresión de caracteres

      PrintStream ps = nuevo PrintStream("demo.txt");

      //Ingrese los valores de los elementos de la matriz en el archivo

      Objeto[] arr = { verdadero , 123, "powernode", 123.45};

      para ( int i = 0; i <arr.length; i++) {

         // imprimir datos

         ps.println(arr[i]);

      }

      ps.cerrar();

   }

}

1.4 Salida formateada

Después de JDK1.5, JAVA expandió la clase PrintStream y agregó un método de salida formateado. Puede usar directamente el método printf () para completar la operación, pero debe especificar el tipo de datos de salida al formatear la salida.

personaje

describir

%s

Representa el contenido como una cadena.

%d

Representa el contenido como un número entero.

%F

Indica que el contenido es un decimal.

%C

Representa el contenido como personajes.

[Ejemplo] Caso de salida formateado

clase pública PrintStreamDemo {

   public static void main (String[] args) lanza FileNotFoundException {

      //Crea un objeto de flujo de impresión de caracteres

      PrintStream ps = nuevo PrintStream("demo.txt");

      //Formatear salida

      ps.printf("姓名:%s 年龄:%d 成绩:%f 性别:%c","小明", 8, 97.5, '男');

      ps.close();

      // System.out的格式化输出

      System.out.printf("姓名:%s 年龄:%d 成绩:%f 性别:%c", "小明", 18, 97.5, '男');

   }

}

 二、PrintWriter类

概述:

PrintWriter提供了PrintStream的所有打印方法,其方法也从不抛出IOException。

PrintWriter与PrintStream的区别:

作为处理流使用时,PrintStream只能封装OutputStream类型的字节流,而PrintWriter既可以封装OutputStream类型的字节流,还能够封装Writer类型的字符输出流并增强其功能。

1.1 构造方法

aa8004063fe1493d9e1658cfb657d616.png

注意:设置了自动刷新,那么只有在换行的时候才会提现效果!

1.2 把数据写入到文件中

【示例】把指定的数据,写入到文件中

public class PrintWriterDemo {

   public static void main(String[] args) throws IOException {

      FileWriter writer = new FileWriter("demo.txt");

      // 创建字符打印流对象,并设置为自定刷新

      PrintWriter pw = new PrintWriter(writer, true);

      // 存储数据

      for(int i = 0; i < 10; i++) {

         pw.println("hello world");

      }

      pw.close();

   }

}

补充:字符打印流也支持数据的格式化输出。

 三、标准输入&输出流

概述:

Java通过系统类System实现标准输入&输出的功能,定义了3个流变量:in、out和err。这三个流在Java中都定义为静态变量,可以直接通过System类进行调用。

1)System.in表示标准输入,通常指从键盘输入数据;

2)System.out表示标准输出,通常指把数据输出到控制台或者屏幕;

3)System.err表示标准错误输出,通常指把数据输出到控制台或者屏幕。

1.1 简单标准输入(System.in)

System.in作为字节输入流类InputStream的对象实现标准输入,通过read()方法从键盘接受数据。 

【示例】获取控制台输入的数据

public class InputStreamDemo {

   public static void main(String[] args) throws IOException {

      // 获取一个标准的输入流

      InputStream in = System.in;

      // 读取键盘输入的内容

      byte[] by = new byte[1024];

      int count = in.read(by);

      // 遍历输出读取到的内容

      for(int i = 0; i < count; i++) {

            System.out.println("-->" + by[i]);

      }

      // 注意:通过System.in获取到的标准输入流不用关闭!

   }

}

运行程序,从键盘输入3个字符abc并按Enter键,保存在缓冲区bf中的元素个数count为5,Enter占用最后两个字节('\r'和'\n'),下图为控制台的效果。

e440ee3fd54c464695c8ed6a22010e36.png

在通常情况下需要从标准输入读取字符,整数,浮点数等具体类型的数据System.in作为标准输入流,是InputStream类的一个对象,其read()方法的主要功能是读取字节和字节数组,不能直接得到需要的数据(如整型,浮点型)。此时,需要另外一个类java.util.Scanner的配合。可以利用Scanner类对标准输入流System.in的数据进行解析,得到需要的数据。

1.2 简单标准输出(System.out) 

System.out作为打印流PrintStream的对象实现标准输出,其定义了print和println方法,支持将Java的任意基本类型作为参数。 

【示例】在控制台输输出的数据

public class PrintStreamTest {

    public static void main(String[] args) {

        // 获取一个标准的输出流

        PrintStream ps = System.out;

        // 在控制台输出数据

        ps.println(123);

        ps.println(123.456);

        ps.println("hello world");

        ps.println(true);

        ps.println('A');

        ps.println(new Date());

      // 注意:通过System.out获取到的标准输出流不用关闭!

    }

}

Nota: ¡Se recomienda no cerrar los flujos de entrada y salida estándar obtenidos a través de System.in y System.out!

 

 

Supongo que te gusta

Origin blog.csdn.net/shengshanlaolin_/article/details/127458488
Recomendado
Clasificación