Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Java

Java BufferedOutputStream: Efficiënt byte-schrijven uitgelegd

Java BufferedOutputStream: Efficiënt byte-schrijven uitgelegd

Beheers de BufferedOutputStream-klasse – het ontwerp, gebruik en kernmethoden – door duidelijke uitleg en praktische code-snippets.

De BufferedOutputStream-klasse, onderdeel van het java.io-pakket, wrapt een andere OutputStream om byte-level output te versnellen. Door data in het geheugen te bufferen, vermindert het het aantal schrijfoperaties naar het onderliggende apparaat, wat de prestaties aanzienlijk kan verbeteren, vooral voor grote bestanden.

Het erft van de abstracte OutputStream-klasse en biedt concrete implementaties voor de methoden.

Hoe BufferedOutputStream werkt

De stream allokeert intern een 8 KiB (8.192 bytes) buffer standaard. Wanneer write() wordt aangeroepen, worden bytes eerst in deze buffer opgeslagen. Alleen wanneer de buffer vol is, of wanneer flush() of close() wordt aangeroepen, worden de data naar de onderliggende stream geflusht.

Omdat schijf-I/O duur is, vermindert deze bufferstrategie round-trips en maakt byte-schrijven aanzienlijk sneller.

Een BufferedOutputStream aanmaken

Importeer de klasse en wrap dan elke OutputStream, meestal een FileOutputStream:

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

Om de buffergrootte te controleren, geef een tweede argument mee:

BufferedOutputStream buffer = new BufferedOutputStream(bestand, 16384); // 16 KiB buffer

Een grotere buffer kan nuttig zijn voor heel grote schrijfacties, maar de standaard 8 KiB werkt goed voor de meeste scenario's.

Kernmethoden van BufferedOutputStream

De klasse implementeert de volledige set OutputStream-methoden met bufferondersteuning.

write()

  • write(int b) – voegt een enkele byte toe aan de buffer
  • write(byte[] b) – schrijft een volledige byte-array
  • write(byte[] b, int off, int len) – schrijft len bytes beginnend bij offset off

Voorbeeld: Tekst naar een bestand schrijven

import java.io.*;

public class Main {
    public static void main(String[] args) {
        String data = "Dit is een regel tekst in het bestand";
        try (FileOutputStream fos = new FileOutputStream("output.txt");
             BufferedOutputStream bos = new BufferedOutputStream(fos)) {
            bos.write(data.getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Dit programma creëert output.txt met de inhoud:

Dit is een regel tekst in het bestand

Let op: String.getBytes() converteert de string naar een byte-array met het platformstandaard-charset. Voor deterministische resultaten, specificeer een charset, bijv. data.getBytes(StandardCharsets.UTF_8).

flush()

Dwingt gebufferde data om direct naar de onderliggende stream geschreven te worden. Dit is nuttig wanneer je moet garanderen dat data persistent is voordat je de stream sluit of naar een netwerksocket schrijft.

close()

Sluit de stream, flusht eventuele overgebleven data en geeft systeembronnen vrij. Na close() kan de stream niet meer gebruikt worden.

Voor een complete referentie, raadpleeg de officiële Java-documentatie: BufferedOutputStream API.

Java

  1. Java's final-sleutelwoord begrijpen: variabelen, methoden en klassen
  2. Java instanceof operator: een uitgebreide gids
  3. Java-erfenis meesteren: concepten, typen en praktische voorbeelden
  4. Java geneste static classes begrijpen: gebruik, verschillen en voorbeelden
  5. Java anonieme inner classes meesteren: definitie, syntax en praktische voorbeelden
  6. Java Singleton patroon uitgelegd: hoe veilig te implementeren en gebruiken
  7. Java Reflectie meesteren: klassen, methoden en velden inspecteren tijdens runtime
  8. Java ArrayList meesteren: operaties, methoden en best practices
  9. Java ObjectOutputStream: Serialisatie, methoden en praktische voorbeelden
  10. Java Generics: Herbruikbare, type-veilige code bouwen
  11. Java-bestandsbewerkingen onder de knie krijgen met java.io – Aanmaken, lezen, schrijven en verwijderen