Ebben az oktatóanyagban példák segítségével megismerhetjük a Java BufferedOutputStream-et és annak módszereit.
A csomag BufferedOutputStream
osztályát java.io
más kimeneti adatfolyamokkal együtt használják az adatok hatékonyabb (bájtokban) írására.
Kiterjeszti az OutputStream
absztrakt osztályt.
A BufferedOutputStream működése
A BufferedOutputStream
fenntartja belső puffer 8192 byte .
Az írási művelet során a bájtokat a belső pufferbe írják a lemez helyett. Miután a puffer megtelt, vagy az adatfolyam bezárult, az egész puffer beíródik a lemezre.
Ezért csökken a lemezre irányuló kommunikáció száma. Ezért a bájtok írása gyorsabb BufferedOutputStream
.
Hozzon létre egy BufferedOutputStream-et
A létrehozásához először BufferedOutputStream
importálnunk kell a java.io.BufferedOutputStream
csomagot. A csomag importálása után itt hozhatjuk létre a kimeneti adatfolyamot.
// Creates a FileOutputStream FileOutputStream file = new FileOutputStream(String path); // Creates a BufferedOutputStream BufferedOutputStream buffer = new BufferOutputStream(file);
A fenti példában létrehoztunk egy BufferdOutputStream
megnevezett puffert a FileOutputStream
megnevezett fájllal.
Itt a belső puffer alapértelmezett mérete 8192 bájt. Megadhatjuk azonban a belső puffer méretét is.
// Creates a BufferedOutputStream with specified size internal buffer BufferedOutputStream buffer = new BufferOutputStream(file, int size);
A puffer segít gyorsabban írni a bájtokat a fájlokba.
A BufferedOutputStream módszerei
Az BufferedOutputStream
osztály az OutputStream
osztály különböző módszereinek megvalósítását biztosítja .
write () módszer
write()
- egyetlen bájtot ír a kimeneti adatfolyam belső pufferjébewrite(byte() array)
- írja a bájtokat a megadott tömbből a kimeneti adatfolyambawrite(byte() arr, int start, int length)
- megírja a hosszúsággal megegyező bájtok számát a tömb tömbjéből a kezdő pozíciótól kezdve
Példa: BufferedOutputStream adatok fájlba írásához
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(); ) ) )
A fenti példában létrehoztunk egy pufferelt kimeneti adatfolyamot, amelynek neve output FileOutputStream
. A kimeneti adatfolyam az output.txt fájllal van összekapcsolva .
FileOutputStream file = new FileOutputStream("output.txt"); BufferedOutputStream output = new BufferedOutputStream(file);
Adatok írására a fájlba a write()
módszert használtuk .
Itt, amikor futtatjuk a programot, az output.txt fájl a következő tartalommal töltődik fel.
This is a line of text inside the file.
Megjegyzés : A getBytes()
programban használt módszer egy karakterláncot bájtgá alakít át.
flush () módszer
A belső puffer törléséhez használhatjuk a flush()
módszert. Ez a módszer arra kényszeríti a kimeneti adatfolyamot, hogy a pufferben lévő összes adatot a célfájlba írja. Például,
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(); ) ) )
Kimenet
Az adatok a fájlba kerülnek.
A program futtatásakor a flush.txt fájl kitöltődik a karakterlánc adatok által képviselt szöveggel.
bezár () módszer
A pufferelt kimeneti adatfolyam bezárásához használhatjuk a close()
módszert. Miután meghívta a módszert, nem használhatjuk a kimeneti adatfolyamot az adatok megírásához.
További információkért látogasson el a Java BufferedOutputStream oldalra (hivatalos Java dokumentáció).