Java BufferedOutputStream-klasse

In Java wordt de klasse BufferedOutputStream gebruikt om gegevens efficiënter naar een uitvoerstroom te schrijven. Het voegt een buffer toe aan een andere uitvoerstroom, waardoor het aantal I/O-bewerkingen wordt verminderd door gegevens tijdelijk in het geheugen op te slaan voordat deze naar de bestemming worden geschreven (zoals een bestand).

Het behoort tot het java.io-pakket en breidt de klasse FilterOutputStream uit.

Klasseverklaring

openbare klasse BufferedOutputStream breidt FilterOutputStream uit

  • Verbetert de I/O-prestaties door een buffer te gebruiken om directe schijftoegang te verminderen.
  • Gegevens worden naar de buffer geschreven en alleen als de buffer vol is (of leeggemaakt), worden deze naar de onderliggende uitvoerstroom verzonden.
  • Meestal gebruikt met FileOutputStream.
  • Helpt bij het schrijven van bytegegevens zoals afbeeldingen, tekstbestanden en binaire gegevens.

Constructeurs

  • GebufferdeOutputStream(OutputStream uit): Creëert een gebufferde uitvoerstroom met een standaardbuffergrootte van 8192 bytes.
  • BufferedOutputStream (OutputStream uit int-grootte): Creëert een gebufferde uitvoerstroom met de opgegeven buffergrootte.

Belangrijke methoden

Methode Beschrijving
void write(int b) Schrijft een enkele byte naar de uitvoerstroom.
void write(byte[] b int off int len) Schrijft een deel van de byte-array naar de uitvoerstroom.
void flush() Spoelt de buffer leeg en dwingt het schrijven van gebufferde uitvoerbytes af.
void close() Sluit de stream en spoelt deze eerst door.

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  ();      }      }   }   

Uitvoer (inhoud van output.txt):

BufferedOutputStream in Java-voorbeeld

Voorbeeld 2: Gebruik van de flush()-methode

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  ();      }      }   }   

Uitvoer (inhoud van flush.txt):

Hallo

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  ();      }      }   }   

Uitvoer (inhoud van large.txt eerste paar regels):

Lijn 0

Lijn 1

Lijn 2

...

Voordelen

  • Snellere schrijfprestaties vergeleken met ongebufferde streams.
  • Vermindert het aantal fysieke schrijfbewerkingen.
  • Maakt het efficiënt schrijven van grote gegevens mogelijk.
Quiz maken