English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En este tutorial, aprenderemos con ejemplos Java BufferedOutputStream y sus métodos.
La clase BufferedOutputStream del paquete java.io se utiliza junto con otros flujos de salida para escribir datos de manera más eficiente (en bytes).
hereda la clase abstracta OutputStream.
BufferedOutputStream mantiene un8192bytesdel búfer interno.
Durante la operación de escritura, los bytes se escriben en el búfer interno en lugar del disco. Una vez que el búfer se llena o el flujo se cierra, todo el búfer se escribe en el disco.
Por lo tanto, se reduce el número de comunicaciones con el disco. Es por eso que escribir bytes usando BufferedOutputStream es más rápido.
Para crear un BufferedOutputStream, primero debemos importar el paquete java.io.BufferedOutputStream. Después de importar el paquete, podemos crear el flujo de salida.
//Crear un FileOutputStream FileOutputStream file = new FileOutputStream(String path); //Crear un BufferedOutputStream BufferedOutputStream buffer = new BufferedOutputStream(file);
En el ejemplo anterior, creamos un BufferedOutputStream llamado buffer y usamos un FileOutputStream llamado file.
Aquí, el tamaño predeterminado del búfer interno es8192bytes. Sin embargo, también podemos especificar el tamaño del búfer interno.
//Crear un BufferedOutputStream con un búfer interno de tamaño especificado BufferedOutputStream buffer = new BufferedOutputStream(file, int size);
Este buffer ayudará a escribir bytes en el archivo más rápidamente.
La clase BufferedOutputStream proporciona implementaciones para diferentes métodos de la clase OutputStream.
write() - Escribe un byte individual en el búfer interno del flujo de salida
write(byte[] array) - Escribe los bytes de un array específico en el flujo de salida
write(byte[] arr, int start, int length)- Escribe en la salida de bytes un número de bytes igual a length comenzando desde la posición start del array
import java.io.FileOutputStream; import java.io.BufferedOutputStream; public class Main { public static void main(String[] args) { String data = "This is a line of text inside the file"; try { //Crear un FileOutputStream FileOutputStream file = new FileOutputStream("output.txt"); //Crear un BufferedOutputStream BufferedOutputStream output = new BufferedOutputStream(file); byte[] array = data.getBytes(); //Escribir datos en el flujo de salida output.write(array); output.close(); } catch (Exception e) { e.getStackTrace(); } } }
En el ejemplo anterior, creamos un flujo de salida de búfer denominado output y FileOutputStream. El flujo de salida está conectado al archivo output.txt.
FileOutputStream file = new FileOutputStream("output.txt"); BufferedOutputStream output = new BufferedOutputStream(file);
Para escribir datos en el archivo, hemos utilizado el método write().
Aquí, cuando ejecutamos el programa,output.txtEl archivo se escribirá con el siguiente contenido.
This is a line of text inside the file.
Atención:En el programa se utiliza el método getBytes() para convertir una cadena en un array de bytes.
Para limpiar el búfer interno, podemos usar el método flush(). Este método fuerza que el flujo de salida escriba todos los datos existentes en el búfer al archivo de destino. Por ejemplo,
import java.io.FileOutputStream; import java.io.BufferedOutputStream; public class Main { public static void main(String[] args) { String data = "This is a demo of the flush method"; try { //Crear un FileOutputStream FileOutputStream file = new FileOutputStream("flush.txt"); //Crear un BufferedOutputStream BufferedOutputStream buffer = new BufferedOutputStream(file); //Escribir datos en el flujo de salida buffer.write(data.getBytes()); //Empujar datos al destino buffer.flush(); System.out.println("Los datos se empujan al archivo."); buffer.close(); } catch(Exception e) { e.getStackTrace(); } } }
Resultado de salida
Los datos se empujan al archivo.
Cuando ejecutamos el programa, el archivo flush.txt se llena con el texto representado por los datos de cadena.
Para cerrar el flujo de salida con缓冲, podemos usar el método close(). Después de llamar a este método, no podremos escribir datos en el flujo de salida.