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.
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
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.
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){
}
}
}