(Flujo de bytes y flujo de caracteres) OutputStream Flujo de salida de bytes

Secuencia de salida de bytes: OutputStream

Los datos de bytes se basan en el tipo de byte como operación principal. Puede utilizar OutPutStream para completar la salida del contenido de bytes. La definición básica de esta clase es la siguiente:

La clase pública abstracta OutputStream extiende los implementos de objetos Closeable, Flushable

En primer lugar, puede encontrar que esta clase implementa dos interfaces, por lo que la correspondencia básica es la siguiente:

La clase OutputStream define un estándar de operación de salida común, y en este estándar de operación se definen un total de tres métodos de salida de contenido.

  • Salida de un solo byte de datos: escritura vacía abstracta pública (int b) lanza IOException
  • Salida de un conjunto de datos de bytes: escritura vacía pública (byte [] b) lanza IOException
  • Número aproximado de bytes de salida (off-len): public void write (byte [] b, int off, int len) arroja IOException El más utilizado

Pero un problema central que debe tenerse en cuenta es que, después de todo, la clase OutputStream es una clase abstracta, y esta abstracción debe transmitirse a través de instancias de subclase si desea obtener objetos instanciados.

Si está realizando operaciones de procesamiento de archivos, puede utilizar la subclase FileOutputStream;

Debido a que la relación de procesamiento de la transformación ascendente debe ocurrir al final, el enfoque principal de la subclase FileOutputSream en este momento se puede colocar en el método de construcción:

  • [Anular] Método de construcción: Public FileOutputStream (archivo de archivo) arroja FileNotFoundException
  • 【追加】 构造 方法 : public FileOutputStream (archivo de archivo, agregado booleano) arroja FileNotFoundException

Ejemplo: use la clase OutputSrteam para lograr la salida de contenido (el inglés no es bueno, use chino en lugar del nombre)

package 字节流与字符流;


import java.io.*;
import java.nio.charset.StandardCharsets;

public class OutputStream字节输出流 {
    public static void main(String[] args) throws IOException {
        File file = new File("F:"+File.separator+"Test"+File.separator+"test.txt");   //1、指定了要操作文件的路径
        if(!file.getParentFile().exists()){ //文件不存在
            file.getParentFile().mkdirs();  //创建父目录
        }
        OutputStream outputStream = new FileOutputStream(file);   //2、通过子类实例化
        String str = "www.baidu.com";   //要输出的文件内容
        outputStream.write(str.getBytes()); //3、将字符串变为字节数组并输出
        outputStream.close();   //4、关闭资源
    }
}

En este momento, el contenido de "www.baidu.com" ya existe en el archivo test.text en Prueba en Disco F.

Este programa utiliza la forma más estándar para realizar el procesamiento de la operación de salida y, en el procesamiento general, solo se crea el directorio principal del archivo y el usuario puede crearlo automáticamente después de la ejecución.

Recordatorio: Dado que la subclase OutputStream también es una subclase de la interfaz AutoCloseable, el método colse () también se puede simplificar su uso, sin apertura manual, solo use try ... cath.

El uso del método close () de la interfaz AutoCloseable está aquí

Ejemplo: realización del proceso de cierre automático

package 字节流与字符流;


import java.io.*;
import java.nio.charset.StandardCharsets;

public class OutputStream字节输出流 {
    public static void main(String[] args) throws IOException {
        File file = new File("F:"+File.separator+"Test"+File.separator+"test.txt");   //1、指定了要操作文件的路径
        if(!file.getParentFile().exists()){ //文件不存在
            file.getParentFile().mkdirs();  //创建父目录
        }
        try(OutputStream outputStream = new FileOutputStream(file)){//2、通过子类实例化
            String str = "www.baidu.com";   //要输出的文件内容
            outputStream.write(str.getBytes()); //3、将字符串变为字节数组并输出
        }catch (IOException e) {
             e.printStackTrace();
        }
    }
}

Después de cada ejecución, "www.baidu.com" aparecerá en este archivo, pero se sobrescribirá (siempre hay solo uno). Si no desea que se sobrescriba, puede utilizar el método de construcción adicional: público FileOutputStream (archivo de archivo, agregado booleano) arroja FileNotFoundException

package 字节流与字符流;


import java.io.*;
import java.nio.charset.StandardCharsets;

public class OutputStream字节输出流 {
    public static void main(String[] args) throws IOException {
        File file = new File("F:"+File.separator+"Test"+File.separator+"test.txt");   //1、指定了要操作文件的路径
        if(!file.getParentFile().exists()){ //文件不存在
            file.getParentFile().mkdirs();  //创建父目录
        }
        try(OutputStream outputStream = new FileOutputStream(file,true)){//2、通过子类实例化,追加的构造方法
            String str = "www.baidu.com";   //要输出的文件内容
            outputStream.write(str.getBytes()); //3、将字符串变为字节数组并输出
        }catch (IOException e) {
            e.printStackTrace();
        }
    }
}

La posibilidad de utilizar el apagado automático depende de la estructura general del proyecto. Todo el programa genera un conjunto de datos de bytes, pero no olvide que hay tres métodos de salida definidos en la clase OutputStream.

Supongo que te gusta

Origin blog.csdn.net/weixin_46245201/article/details/112759411
Recomendado
Clasificación