Java BufferedOutputStream klasse
I Java bruges BufferedOutputStream-klassen til at skrive data til en outputstrøm mere effektivt. Den tilføjer en buffer til en anden outputstrøm, hvilket reducerer antallet af I/O-operationer ved midlertidigt at gemme data i hukommelsen, før de skrives til destinationen (som en fil).
Den hører til java.io-pakken og udvider FilterOutputStream-klassen.
Klasseerklæring
public class BufferedOutputStream udvider FilterOutputStream
- Forbedrer I/O-ydeevnen ved at bruge en buffer til at reducere direkte diskadgang.
- Data skrives til bufferen, og kun når bufferen er fuld (eller skyllet), sendes den til den underliggende outputstrøm.
- Anvendes typisk med FileOutputStream.
- Hjælper med at skrive bytedata såsom billedtekstfiler og binære data.
Konstruktører
- BufretOutputStream(OutputStream ud): Opretter en bufferet outputstrøm med en standardbufferstørrelse på 8192 bytes.
- BufretOutputStream(OutputStream ud int størrelse): Opretter en bufferet outputstrøm med den angivne bufferstørrelse.
Vigtige metoder
| Metode | Beskrivelse |
|---|---|
void write(int b) | Skriver en enkelt byte til outputstrømmen. |
void write(byte[] b int off int len) | Skriver en del af byte-arrayet til outputstrømmen. |
void flush() | Tømmer bufferen og tvinger alle bufferede outputbytes til at blive skrevet. |
void close() | Lukker strømmen og skyller den først. |
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 (); } } }
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 (); } } }
Output (indhold af output.txt):
BufferedOutputStream i Java Eksempel
Eksempel 2: Brug af flush()-metoden
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 (); } } }
Output (indhold af flush.txt):
Hej
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 (); } } }
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 (); } } }
Output (indhold af large.txt første par linjer):
Linje 0
Linje 1
Linje 2
...
Fordele
- Hurtigere skriveydeevne sammenlignet med ubuffrede streams.
- Reducerer antallet af fysiske skriveoperationer.
- Gør det muligt at skrive store data effektivt.