Clase Java BufferedOutputStream
En Java, la clase BufferedOutputStream se utiliza para escribir datos en un flujo de salida de manera más eficiente. Agrega un búfer a otro flujo de salida, lo que reduce la cantidad de operaciones de E/S al almacenar temporalmente datos en la memoria antes de escribirlos en el destino (como un archivo).
Pertenece al paquete java.io y extiende la clase FilterOutputStream.
Declaración de clase
la clase pública BufferedOutputStream extiende FilterOutputStream
- Mejora el rendimiento de E/S mediante el uso de un búfer para reducir el acceso directo al disco.
- Los datos se escriben en el búfer y solo cuando el búfer está lleno (o vaciado) se envían al flujo de salida subyacente.
- Normalmente se utiliza con FileOutputStream.
- Ayuda a escribir datos de bytes, como archivos de texto de imágenes y datos binarios.
Constructores
- BufferedOutputStream(OutputStream fuera): Crea un flujo de salida almacenado en búfer con un tamaño de búfer predeterminado de 8192 bytes.
- BufferedOutputStream (OutputStream fuera de tamaño int): Crea un flujo de salida almacenado en búfer con el tamaño de búfer especificado.
Métodos importantes
| Método | Descripción |
|---|---|
void write(int b) | Escribe un solo byte en el flujo de salida. |
void write(byte[] b int off int len) | Escribe una parte de la matriz de bytes en el flujo de salida. |
void flush() | Vacía el búfer y fuerza la escritura de los bytes de salida almacenados en el búfer. |
void close() | Cierra el chorro enjuagándolo primero. |
Java import java.io.* ; public class BufferedOutputStreamExample { public static void main ( String [] args ) { String data = 'BufferedOutputStream in Java Example' ; try { FileOutputStream fileOut = new FileOutputStream ( 'output.txt' ); BufferedOutputStream bufferOut = new BufferedOutputStream ( fileOut ); byte [] bytes = data . getBytes (); bufferOut . write ( bytes ); bufferOut . close (); System . out . println ( 'Data written successfully.' ); } catch ( IOException e ) { e . printStackTrace (); } } }
import java.io.* ; public class BufferedOutputStreamExample { public static void main ( String [] args ) { String data = 'BufferedOutputStream in Java Example' ; try { FileOutputStream fileOut = new FileOutputStream ( 'output.txt' ); BufferedOutputStream bufferOut = new BufferedOutputStream ( fileOut ); byte [] bytes = data . getBytes (); bufferOut . write ( bytes ); bufferOut . close (); System . out . println ( 'Data written successfully.' ); } catch ( IOException e ) { e . printStackTrace (); } } }
Salida (contenido de salida.txt):
Ejemplo de BufferedOutputStream en Java
Ejemplo 2: uso del método flush()
Java import java.io.* ; public class FlushExample { public static void main ( String [] args ) { try { FileOutputStream fileOut = new FileOutputStream ( 'flush.txt' ); BufferedOutputStream bufferOut = new BufferedOutputStream ( fileOut ); bufferOut . write ( 'Hello' . getBytes ()); bufferOut . flush (); // ensures data is written immediately bufferOut . close (); System . out . println ( 'Flush example completed.' ); } catch ( IOException e ) { e . printStackTrace (); } } }
Salida (contenido de flush.txt):
Hola
Java import java.io.* ; public class LargeDataExample { public static void main ( String [] args ) { try { FileOutputStream fileOut = new FileOutputStream ( 'large.txt' ); BufferedOutputStream bufferOut = new BufferedOutputStream ( fileOut 8192 ); // custom buffer size for ( int i = 0 ; i < 1000 ; i ++ ) { bufferOut . write (( 'Line ' + i + 'n' ). getBytes ()); } bufferOut . close (); System . out . println ( 'Large data written successfully.' ); } catch ( IOException e ) { e . printStackTrace (); } } }
import java.io.* ; public class LargeDataExample { public static void main ( String [] args ) { try { FileOutputStream fileOut = new FileOutputStream ( 'large.txt' ); BufferedOutputStream bufferOut = new BufferedOutputStream ( fileOut 8192 ); // custom buffer size for ( int i = 0 ; i < 1000 ; i ++ ) { bufferOut . write (( 'Line ' + i + 'n' ). getBytes ()); } bufferOut . close (); System . out . println ( 'Large data written successfully.' ); } catch ( IOException e ) { e . printStackTrace (); } } }
Salida (contenido de las primeras líneas de big.txt):
Línea 0
Línea 1
Línea 2
...
Ventajas
- Rendimiento de escritura más rápido en comparación con transmisiones sin búfer.
- Reduce el número de operaciones de escritura física.
- Permite escribir grandes datos de manera eficiente.