Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Java

Java BufferedOutputStream: Escritura Eficiente de Bytes Explicada

Java BufferedOutputStream: Escritura Eficiente de Bytes Explicada

Domina la clase BufferedOutputStream—su diseño, uso y métodos principales—a través de explicaciones claras y fragmentos de código prácticos.

La clase BufferedOutputStream, parte del paquete java.io, envuelve otro OutputStream para acelerar la salida a nivel de byte. Al almacenar datos en memoria, reduce el número de operaciones de escritura en el dispositivo subyacente, lo que puede mejorar drásticamente el rendimiento, especialmente para archivos grandes.

Hereda de la clase abstracta OutputStream y proporciona implementaciones concretas para sus métodos.

Cómo Funciona BufferedOutputStream

El flujo asigna internamente un búfer de 8 KiB (8,192 bytes) por defecto. Cuando se llama a write(), los bytes se almacenan primero en este búfer. Solo cuando el búfer está lleno, o cuando se invoca flush() o close(), los datos se vacían al flujo subyacente.

Como el I/O de disco es costoso, esta estrategia de búfer reduce los viajes de ida y vuelta y hace que las escrituras de bytes sean considerablemente más rápidas.

Crear un BufferedOutputStream

Importa la clase y luego envuelve cualquier OutputStream, típicamente un FileOutputStream:

FileOutputStream archivo = new FileOutputStream("output.txt");
BufferedOutputStream buffer = new BufferedOutputStream(archivo);

Para controlar el tamaño del búfer, proporciona un segundo argumento:

BufferedOutputStream buffer = new BufferedOutputStream(archivo, 16384); // búfer de 16 KiB

Elegir un búfer más grande puede ser beneficioso para escrituras muy grandes, pero el valor por defecto de 8 KiB funciona bien para la mayoría de los escenarios.

Métodos Principales de BufferedOutputStream

La clase implementa el conjunto completo de métodos de OutputStream con soporte de búfer.

write()

Ejemplo: Escribir Texto en un Archivo

import java.io.*;

public class Main {
    public static void main(String[] args) {
        String datos = "Esta es una línea de texto dentro del archivo";
        try (FileOutputStream fos = new FileOutputStream("output.txt");
             BufferedOutputStream bos = new BufferedOutputStream(fos)) {
            bos.write(datos.getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Ejecutar este programa crea output.txt conteniendo:

Esta es una línea de texto dentro del archivo

Nota: String.getBytes() convierte la cadena en un array de bytes usando el charset por defecto de la plataforma. Para resultados deterministas, especifica un charset, ej., datos.getBytes(StandardCharsets.UTF_8).

flush()

Fuerza que cualquier dato en búfer se escriba en el flujo subyacente inmediatamente. Esto es útil cuando necesitas asegurar la persistencia de datos antes de cerrar el flujo o al escribir en un socket de red.

BufferedOutputStream bos = new BufferedOutputStream(fos);
bos.write(datos.getBytes());
bos.flush(); // garantiza que los datos se envíen

close()

Cierra el flujo, vaciando cualquier dato restante y liberando recursos del sistema. Después de llamar a close(), el flujo no puede usarse de nuevo.

Para una referencia completa, consulta la documentación oficial de Java: API de BufferedOutputStream.

Java

  1. Palabra clave final en Java: Variables, métodos y clases
  2. Operador instanceof en Java: Guía completa
  3. Dominando la herencia en Java: Conceptos, tipos y ejemplos prácticos
  4. Entendiendo las clases anidadas estáticas en Java: Uso, diferencias y ejemplos
  5. Dominando las clases internas anónimas en Java: Definición, sintaxis y ejemplos prácticos
  6. Patrón Singleton en Java explicado: Cómo implementarlo y usarlo de forma segura
  7. Dominando la Reflexión en Java: Inspeccionando clases, métodos y campos en tiempo de ejecución
  8. Dominando ArrayList en Java: Operaciones, métodos y mejores prácticas
  9. Dominando ObjectOutputStream de Java: Serialización, Métodos y Ejemplos Prácticos
  10. Dominando Java Generics: Construyendo Código Reutilizable y Type-Safe
  11. Dominando las operaciones de archivos en Java con java.io: creación, lectura, escritura y eliminación