In deze tutorial leren we met behulp van voorbeelden over Java BufferedOutputStream en zijn methoden.
De BufferedOutputStream
klasse van het java.io
pakket wordt gebruikt met andere uitvoerstromen om de gegevens (in bytes) efficiënter te schrijven.
Het breidt de OutputStream
abstracte klasse uit.
Werken met BufferedOutputStream
Het BufferedOutputStream
onderhoudt een interne buffer van 8192 bytes .
Tijdens de schrijfbewerking worden de bytes naar de interne buffer geschreven in plaats van naar de schijf. Zodra de buffer is gevuld of de stream is gesloten, wordt de hele buffer naar de schijf geschreven.
Daarom wordt het aantal communicatie met de schijf verminderd. Dit is de reden waarom het schrijven van bytes sneller gaat met BufferedOutputStream
.
Maak een BufferedOutputStream
Om een te maken BufferedOutputStream
, moeten we eerst het java.io.BufferedOutputStream
pakket importeren . Zodra we het pakket hebben geïmporteerd, is hier hoe we de uitvoerstroom kunnen maken.
// Creates a FileOutputStream FileOutputStream file = new FileOutputStream(String path); // Creates a BufferedOutputStream BufferedOutputStream buffer = new BufferOutputStream(file);
In het bovenstaande voorbeeld hebben we een BufferdOutputStream
benoemde buffer gemaakt met het FileOutputStream
genoemde bestand.
Hier heeft de interne buffer de standaardgrootte van 8192 bytes. We kunnen echter ook de grootte van de interne buffer specificeren.
// Creates a BufferedOutputStream with specified size internal buffer BufferedOutputStream buffer = new BufferOutputStream(file, int size);
De buffer helpt om sneller bytes naar bestanden te schrijven.
Methoden van BufferedOutputStream
De BufferedOutputStream
klasse biedt implementaties voor verschillende methoden in de OutputStream
klasse.
write () methode
write()
- schrijft een enkele byte naar de interne buffer van de uitvoerstroomwrite(byte() array)
- schrijft de bytes van de opgegeven array naar de uitvoerstroomwrite(byte() arr, int start, int length)
- schrijft het aantal bytes dat gelijk is aan de lengte naar de uitvoerstroom vanuit een array vanaf het begin van de positie
Voorbeeld: BufferedOutputStream om gegevens naar een bestand te schrijven
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 ( // Creates a FileOutputStream FileOutputStream file = new FileOutputStream("output.txt"); // Creates a BufferedOutputStream BufferedOutputStream output = new BufferedOutputStream(file); byte() array = data.getBytes(); // Writes data to the output stream output.write(array); output.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
In het bovenstaande voorbeeld hebben we een gebufferde uitvoerstroom gemaakt met de naam output samen met FileOutputStream
. De outputstroom is gekoppeld aan het bestand output.txt .
FileOutputStream file = new FileOutputStream("output.txt"); BufferedOutputStream output = new BufferedOutputStream(file);
Om gegevens naar het bestand te schrijven, hebben we de write()
methode gebruikt.
Hier wanneer we het programma uitvoeren, wordt het bestand output.txt gevuld met de volgende inhoud.
This is a line of text inside the file.
Opmerking : de getBytes()
methode die in het programma wordt gebruikt, zet een string om in een array van bytes.
flush () methode
Om de interne buffer leeg te maken, kunnen we de flush()
methode gebruiken. Deze methode dwingt de uitvoerstroom om alle gegevens in de buffer naar het bestemmingsbestand te schrijven. Bijvoorbeeld,
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 ( // Creates a FileOutputStream FileOutputStream file = new FileOutputStream(" flush.txt"); // Creates a BufferedOutputStream BufferedOutputStream buffer = new BufferedOutputStream(file); // Writes data to the output stream buffer.write(data.getBytes()); // Flushes data to the destination buffer.flush(); System.out.println("Data is flushed to the file."); buffer.close(); ) catch(Exception e) ( e.getStackTrace(); ) ) )
Uitvoer
De gegevens worden naar het bestand gespoeld.
Wanneer we het programma uitvoeren, wordt het bestand flush.txt gevuld met de tekst die wordt vertegenwoordigd door de stringgegevens .
close () Methode
Om de gebufferde outputstroom te sluiten, kunnen we de close()
methode gebruiken. Als de methode eenmaal is aangeroepen, kunnen we de uitvoerstroom niet gebruiken om de gegevens te schrijven.
Ga voor meer informatie naar Java BufferedOutputStream (officiële Java-documentatie).