Java IO buffer stream overview-3

Inserte la descripción de la imagen aquí

Flujo de memoria intermedia

Las secuencias
almacenadas en búfer también se denominan secuencias avanzadas, que son mejoras a las cuatro secuencias básicas de FileXXX, por lo que también son cuatro secuencias clasificadas según el tipo de datos: una secuencia de búfer que puede leer y escribir eficientemente, una secuencia de conversión que puede convertir la codificación y un objeto de almacenamiento persistente. Flujo serializado

  • Flujo de búfer de bytes : BufferedInputStream, BufferedOutputStream
  • Secuencia de búfer de caracteres : BufferedReader, BufferedWriter

Flujo de entrada almacenado en byte [BufferedInputStream]

Inserte la descripción de la imagen aquí
! ! ! Código en! ! !

public class Demo01BufferedInputStreram {

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

        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("F:\\cccc.txt"));
        byte[] bytes = new byte[1024];
        int len = 0;
        while ((len = bis.read(bytes)) != -1) {
            System.out.println(new String(bytes, 0, len));
        }
        bis.close();
    }

}

! ! ! El resultado! ! ! La función proporcionada por FileInputStream es la misma que leer el contenido del archivo de manera eficiente
Inserte la descripción de la imagen aquí

Flujo de salida en búfer de bytes [BufferedOutputStream]

Inserte la descripción de la imagen aquí
! ! ! Código en! ! !

public class Demo02BufferedOutputStream {

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

        BufferedOutputStream bos = new BufferedOutputStream(
                new FileOutputStream("F:\\dddd.txt", true));
        String content = "!!!!Hello World!!!" + "\r\n";
        for (int i = 0; i < 10; i++) {
            bos.write(content.getBytes());
        }
        System.out.println("文件输出成功");
        bos.close();


    }
}

**! ! ! El resultado! ! ! ** La función proporcionada por FileIOnputStream es la misma que leer el contenido del archivo de manera eficiente
Inserte la descripción de la imagen aquí

Demo CopyFile

! ! ! ¡Ingrese el código y copie los archivos! ! ! No me importa qué archivo sea. . . .

public class Demo03CopyFIle {

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

        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("E:\\Media\\MO8EPSG_1.rmvb"));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("F:\\MO8EPSG_1.rmvb"));

        long start = System.currentTimeMillis();
        byte[] bytes = new byte[10245];
        int len = 0;
        while ((len = bis.read(bytes)) != -1) {
            bos.write(bytes, 0, len);
        }

        bis.close();
        bos.close();

        long end = System.currentTimeMillis();
        System.out.println("本次复制文件用了:" + (end - start) + "毫秒");
    }

}

**! ! ! El resultado! ! ! ** Solo tomó 1 segundo copiar 1 archivo G
Inserte la descripción de la imagen aquí

Flujo de entrada de caracteres almacenados temporalmente [BufferedReader]

Lea el texto de una secuencia de entrada de caracteres y caracteres de búfer para proporcionar una lectura eficiente de caracteres, matrices y líneas.
Se puede especificar el tamaño del búfer o se puede usar el tamaño predeterminado. El valor predeterminado es lo suficientemente grande para la mayoría de los usos.

Inserte la descripción de la imagen aquí

! ! ! Código en! ! !

public class BufferedReaderAndBufferedWriter {![在这里插入图片描述](https://img-blog.csdnimg.cn/20200217205959345.png)

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

        BufferedReader br = new BufferedReader(new FileReader("F:\\cccc.txt"));
        char[] chars = new char[1024];
        int len = 0;
        while ((len = br.read(chars)) != -1) {
            System.out.println(new String(chars, 0, len));
        }

    }

}

! ! ! El resultado! ! !
Inserte la descripción de la imagen aquí

Nota:
La entrada del archivo especificado se almacenará en el búfer. No hay almacenamiento en búfer, y cada llamada a read () o readLine () puede hacer que los bytes se lean del archivo, se conviertan en caracteres y luego se devuelvan. Esto puede ser muy ineficiente
. Los programas que usan DataInputStreams para la entrada de texto pueden reemplazarse usando el BufferedReader apropiado Localice cada DataInputStream

Secuencia de salida del búfer de caracteres [BufferedWriter]

Escriba texto en una secuencia de salida de caracteres, almacenando caracteres en búfer para proporcionar una escritura eficiente de caracteres individuales, matrices y cadenas.
Puede especificar el tamaño del búfer o puede aceptar el tamaño predeterminado. El valor predeterminado es lo suficientemente grande para la mayoría de los usos.

Inserte la descripción de la imagen aquí

! ! ! Código en! ! !

public class Demo02BufferedWriter {

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

        BufferedWriter bw = new BufferedWriter(new FileWriter("F:\\ffff.txt", true));
        String content = "Hello World" + "\r\n";
        for (int i = 0; i < 10; i++) {
            bw.write(content);
        }
        bw.close();
    }
}

! ! ! El resultado! ! !
Inserte la descripción de la imagen aquí

Nota:
La salida de PrintWriter se almacenará en un archivo. Sin almacenamiento en búfer, cada método call to print () convertirá caracteres en bytes y luego escribirá en el archivo inmediatamente, lo que puede ser muy ineficiente

Publicado 24 artículos originales · elogiado 33 · visitas 2391

Supongo que te gusta

Origin blog.csdn.net/weixin_41241629/article/details/104353246
Recomendado
Clasificación