Java BufferedOutputStream klase
Java programmā BufferedOutputStream tiek izmantota, lai efektīvāk rakstītu datus izvades straumē. Tas pievieno buferi citai izvades straumei, samazinot I/O operāciju skaitu, īslaicīgi saglabājot datus atmiņā pirms to ierakstīšanas galamērķī (piemēram, failā).
Tas pieder pakotnei java.io un paplašina FilterOutputStream klasi.
Klases deklarācija
publiskā klase BufferedOutputStream paplašina FilterOutputStream
- Uzlabo I/O veiktspēju, izmantojot buferi, lai samazinātu tiešu piekļuvi diskam.
- Dati tiek ierakstīti buferī un tikai tad, kad buferis ir pilns (vai izskalots), tie tiek nosūtīti uz pamatā esošo izvades plūsmu.
- Parasti izmanto kopā ar FileOutputStream.
- Palīdz rakstīt baitu datus, piemēram, attēlu teksta failus un bināros datus.
Konstruktori
- BufferedOutputStream (OutputStream out): Izveido buferizētu izvades straumi ar noklusējuma bufera lielumu 8192 baiti.
- BufferedOutputStream (OutputStream izejas iekšējais izmērs): Izveido buferizētu izvades straumi ar norādīto bufera izmēru.
Svarīgas metodes
| Metode | Apraksts |
|---|---|
void write(int b) | Ieraksta vienu baitu izvades straumē. |
void write(byte[] b int off int len) | Ieraksta daļu no baitu masīva izvades straumē. |
void flush() | Izskalo buferi un liek ierakstīt visus buferizētos izvades baitus. |
void close() | Aizver straumi, vispirms to izskalojot. |
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 (); } } }
Izvade (faila output.txt saturs):
BufferedOutputStream Java piemērā
2. piemērs: flush() metodes izmantošana
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 (); } } }
Izvade (faila flush.txt saturs):
Sveiki
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 (); } } }
Izvade (faila large.txt pirmo rindiņu saturs):
0. rindiņa
1. rindiņa
2. rindiņa
...
Priekšrocības
- Ātrāka rakstīšanas veiktspēja salīdzinājumā ar nebuferētām straumēm.
- Samazina fizisko rakstīšanas darbību skaitu.
- Ļauj efektīvi ierakstīt lielus datus.