Tässä opetusohjelmassa opitaan Java BufferedOutputStreamista ja sen menetelmistä esimerkkien avulla.
BufferedOutputStream
Luokan java.io
paketti käytetään yhdessä muiden poistovirrat kirjoittaa tietoja (tavuina) tehokkaammin.
Se laajentaa OutputStream
abstraktia luokkaa.
BufferedOutputStreamin toiminta
BufferedOutputStream
On 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 BufferedOutputStream
meidän on java.io.BufferedOutputStream
ensin 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 BufferdOutputStream
nimetyn puskurin FileOutputStream
nimeltä 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
BufferedOutputStream
Luokka antaa toteutuksia eri menetelmiä OutputStream
luokkaan.
write () -menetelmä
write()
- kirjoittaa yhden tavun ulostulovirran sisäiseen puskuriinwrite(byte() array)
- kirjoittaa tavut määritetystä taulukosta lähtövirtaanwrite(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).