Java: flujos de entrada y salida almacenados en búfer (BufferedInputStream, BufferedOutputStream)

    Búfer Búfer Es una parte del espacio de memoria. Un cierto espacio de almacenamiento está reservado en el espacio de memoria. Estos espacios de almacenamiento se utilizan para almacenar datos de entrada o salida. Esta parte del espacio se llama un búfer, y el búfer tiene un cierto tamaño.


    Existe un desequilibrio entre la velocidad de transmisión de datos y la velocidad de procesamiento de datos. Por ejemplo, 50 escrituras en el disco duro por segundo tienen un gran impacto en el sistema, y ​​se pierde mucho tiempo ocupado procesando los dos eventos de comenzar a escribir y finaliza la escritura y los almacena temporalmente en el búfer. Se vuelve a escribir en el disco duro cada 5 segundos, los datos se pueden enviar directamente al búfer, los dispositivos de alta velocidad no tienen que esperar a los dispositivos de baja velocidad, el impacto en el El sistema es pequeño y la eficiencia de escritura es alta.


    A continuación se presenta el uso de los dos flujos avanzados BufferedInputStream y BufferedOutputStream en lectura y escritura, tomando como ejemplo la copia de archivos.



inserte la descripción de la imagen aquí



FileInputStream fis = nuevo FileInputStream (directorio de archivos)


// Encapsula fis en el objeto BufferedInputStream
BufferedInputStream bis = new BufferedInputStream(fis);



FileOutputStream fos = new FileOutputStream(directorio de archivos);


// Encapsular fos en el objeto BufferedOutputStream
BufferedOutputStream bos = new BufferedOutputStream(fos);


    Entre ellos, bos.flush() en realidad puede ignorar este flujo de búfer de descarga. Simplemente llame a bis.close() y bos.close().



    Visible a través del código subyacente de BufferedInputStream, Inputstream se ha cerrado



inserte la descripción de la imagen aquí



    Luego, a través del código subyacente de BufferedOutputStream, aunque no hay un método close(), de acuerdo con la nueva característica de JDK7 try (declarado aquí se cerrará automáticamente), por lo que OutputStream también se cierra automáticamente, y luego llame al método flush() para ejecutar.



inserte la descripción de la imagen aquí



    El código central es el siguiente:



public class Buffer_IO_Stream {
    
    

    public static void main(String[] args){
    
    
        try {
    
    
            FileInputStream fis = new FileInputStream("C:\\Users\\Administrator\\Desktop\\test\\1230.txt");
            BufferedInputStream bis  = new BufferedInputStream(fis);

            FileOutputStream fos  = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\test\\copy.txt");
            BufferedOutputStream bos = new BufferedOutputStream(fos);

            int size;
            byte[] buf  = new byte[1024];
            while ((size=bis.read(buf))!=-1){
    
    
                bos.write(buf,0,size);
            }

            // bos.flush();
            bis.close();
            bos.close();
        }
        catch(Exception e){
    
    
        }
    }
}


Supongo que te gusta

Origin blog.csdn.net/weixin_48591974/article/details/128121327
Recomendado
Clasificación