Java BufferedOutputStream (Örneklerle)

Bu eğitimde, örnekler yardımıyla Java BufferedOutputStream ve yöntemleri hakkında bilgi edineceğiz.

BufferedOutputStreamSınıf java.iopaketi daha verimli (bayt) verileri yazmak için bir çıkış akışları ile birlikte kullanılır.

OutputStreamSoyut sınıfı genişletir .

BufferedOutputStream'in Çalışması

BufferedOutputStreamBir iç muhafaza 8192 bayt tamponu .

Yazma işlemi sırasında baytlar disk yerine dahili tampona yazılır. Tampon doldurulduğunda veya akış kapatıldıktan sonra, tüm tampon diske yazılır.

Böylelikle diskle iletişim sayısı azalır. Bu nedenle bayt yazmak daha hızlıdır BufferedOutputStream.

BufferedOutputStream oluşturma

Bir oluşturmak için BufferedOutputStreamönce java.io.BufferedOutputStreampaketi içe aktarmalıyız . Paketi buraya aktardıktan sonra çıktı akışını nasıl oluşturabiliriz.

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

Yukarıdaki örnekte, adlandırılmış dosya BufferdOutputStreamile adlandırılmış bir tampon oluşturduk FileOutputStream.

Burada, dahili arabelleğin varsayılan boyutu 8192 bayttır. Bununla birlikte, dahili tamponun boyutunu da belirleyebiliriz.

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

Arabellek, baytların dosyalara daha hızlı yazılmasına yardımcı olacaktır.

BufferedOutputStream Yöntemleri

BufferedOutputStreamSınıfı farklı yöntemler için uygulamaları OutputStreamsınıfı.

write () Yöntem

  • write() - çıktı akışının dahili tamponuna tek bir bayt yazar
  • write(byte() array) - belirtilen dizideki baytları çıktı akışına yazar
  • write(byte() arr, int start, int length) - Konum başlangıcından başlayarak bir diziden çıkış akışına uzunluğa eşit bayt sayısını yazar

Örnek: Verileri bir Dosyaya yazmak için BufferedOutputStream

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

Yukarıdaki örnekte, ile birlikte output adında tamponlanmış bir çıktı akışı oluşturduk FileOutputStream. Çıkış akışı output.txt dosyasıyla bağlantılıdır .

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

Dosyaya veri yazmak için write()yöntemi kullandık .

Burada programı çalıştırdığımızda output.txt dosyası aşağıdaki içerikle doldurulur.

 This is a line of text inside the file. 

Not : Programda getBytes()kullanılan yöntem bir dizgeyi bayt dizisine dönüştürür.

flush () Yöntem

Dahili tamponu temizlemek için flush()yöntemi kullanabiliriz . Bu yöntem, çıktı akışını arabellekte bulunan tüm verileri hedef dosyaya yazmaya zorlar. Örneğin,

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

Çıktı

 Veriler dosyaya boşaltılır. 

Programı çalıştırdığımızda, flush.txt dosyası dize verilerinin temsil ettiği metinle doldurulur.

close () Yöntem

Tamponlu çıktı akışını kapatmak için close()yöntemi kullanabiliriz . Yöntem çağrıldığında, verileri yazmak için çıktı akışını kullanamayız.

Daha fazla bilgi edinmek için Java BufferedOutputStream'i (resmi Java belgeleri) ziyaret edin.

Ilginç makaleler...