Java BufferedOutputStream (esimerkkien kanssa)

Tässä opetusohjelmassa opitaan Java BufferedOutputStreamista ja sen menetelmistä esimerkkien avulla.

BufferedOutputStreamLuokan java.iopaketti käytetään yhdessä muiden poistovirrat kirjoittaa tietoja (tavuina) tehokkaammin.

Se laajentaa OutputStreamabstraktia luokkaa.

BufferedOutputStreamin toiminta

BufferedOutputStreamOn sisäisen puskurin 8192 tavua .

Kirjoitusoperaation aikana tavut kirjoitetaan sisäiseen puskuriin levyn sijaan. Kun puskuri on täytetty tai virta on suljettu, koko puskuri kirjoitetaan levylle.

Siksi levylle tapahtuvan tiedonsiirron määrä vähenee. Siksi tavujen kirjoittaminen on nopeampaa BufferedOutputStream.

Luo BufferedOutputStream

Paketin luomiseksi BufferedOutputStreammeidän on java.io.BufferedOutputStreamensin tuotava paketti. Kun tuot paketin täältä, voimme luoda tulosvirran.

 // Creates a FileOutputStream FileOutputStream file = new FileOutputStream(String path); // Creates a BufferedOutputStream BufferedOutputStream buffer = new BufferOutputStream(file); 

Yllä olevassa esimerkissä olemme luoneet BufferdOutputStreamnimetyn puskurin FileOutputStreamnimeltä mainitun tiedoston kanssa.

Tässä sisäisen puskurin oletuskoko on 8192 tavua. Voimme kuitenkin määrittää myös sisäisen puskurin koon.

 // Creates a BufferedOutputStream with specified size internal buffer BufferedOutputStream buffer = new BufferOutputStream(file, int size); 

Puskuri auttaa kirjoittamaan tavuja tiedostoihin nopeammin.

BufferedOutputStreamin menetelmät

BufferedOutputStreamLuokka antaa toteutuksia eri menetelmiä OutputStreamluokkaan.

write () -menetelmä

  • write() - kirjoittaa yhden tavun ulostulovirran sisäiseen puskuriin
  • write(byte() array) - kirjoittaa tavut määritetystä taulukosta lähtövirtaan
  • write(byte() arr, int start, int length) - kirjoittaa tavujen määrän, joka on yhtä suuri kuin lähtövirran matriisista lähtöpaikan alusta alkaen

Esimerkki: BufferedOutputStream tietojen kirjoittamiseen tiedostoon

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

Yllä olevassa esimerkissä olemme luoneet puskuroidun ulostulovirran, jonka nimi on lähtö yhdessä FileOutputStream. Lähtövirta linkitetään tiedostoon output.txt .

 FileOutputStream file = new FileOutputStream("output.txt"); BufferedOutputStream output = new BufferedOutputStream(file); 

Tietojen kirjoittamiseen tiedostoon olemme käyttäneet write()menetelmää.

Tässä kun suoritamme ohjelmaa, output.txt- tiedosto on täytetty seuraavalla sisällöllä.

 This is a line of text inside the file. 

Huomaa : Ohjelmassa getBytes()käytetty menetelmä muuntaa merkkijonon tavujoukoksi.

huuhtele () menetelmä

Sisäisen puskurin tyhjentämiseksi voimme käyttää flush()menetelmää. Tämä menetelmä pakottaa lähtövirran kirjoittamaan kaiken puskurissa olevan datan kohdetiedostoon. Esimerkiksi,

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

Tuotos

 Tiedot huuhdellaan tiedostoon. 

Kun suoritamme ohjelmaa, tiedosto flush.txt on täytetty tekstillä, jota merkkijonodata edustaa.

sulje () Menetelmä

Puskuroidun lähtövirran sulkemiseksi voimme käyttää close()menetelmää. Kun menetelmä on kutsuttu, emme voi käyttää lähtövirtaa tietojen kirjoittamiseen.

Lisätietoja on Java BufferedOutputStream -sivustossa (virallinen Java-dokumentaatio).

Mielenkiintoisia artikkeleita...