Java BufferedInputStream (Örneklerle)

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

BufferedInputStreamSınıf java.iopaketi daha verimli (bayt) veri okumak için diğer giriş akımları ile birlikte kullanılır.

InputStreamSoyut sınıfı genişletir .

BufferedInputStream'in Çalışması

BufferedInputStreamBir iç muhafaza 8192 bayt tamponu .

Okuma işlemi sırasında, BufferedInputStreamdiskten bir bayt yığını okunur ve dahili tamponda saklanır. Ve dahili tampon baytlarından ayrı ayrı okunur.

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

BufferedInputStream Oluşturun

Bir oluşturmak için BufferedInputStreamönce java.io.BufferedInputStreampaketi içe aktarmalıyız . Paketi burada içe aktardıktan sonra, giriş akışını nasıl oluşturabiliriz.

 // Creates a FileInputStream FileInputStream file = new FileInputStream(String path); // Creates a BufferedInputStream BufferedInputStream buffer = new BufferInputStream(file); 

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

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

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

Arabellek, dosyalardan baytların daha hızlı okunmasına yardımcı olacaktır.

BufferedInputStream Yöntemleri

BufferedInputStreamSınıf, farklı yöntemler için uygulamalar içinde mevcut içerir InputStreamsınıfı.

read () Yöntem

  • read() - giriş akışından tek bir bayt okur
  • read(byte() arr) - akıştan bayt okur ve belirtilen dizide depolar
  • read(byte() arr, int start, int length) - akışın uzunluğuna eşit bayt sayısını okur ve konum başlangıcından başlayarak belirtilen dizide depolar

Aşağıdaki içeriğe sahip input.txt adında bir dosyamız olduğunu varsayalım .

 This is a line of text inside the file. 

Dosyayı kullanarak okumaya çalışalım BufferedInputStream.

 import java.io.BufferedInputStream; import java.io.FileInputStream; class Main ( public static void main(String() args) ( try ( // Creates a FileInputStream FileInputStream file = new FileInputStream("input.txt"); // Creates a BufferedInputStream BufferedInputStream input = new BufferedInputStream(file); // Reads first byte from file int i = input .read(); while (i != -1) ( System.out.print((char) i); // Reads next byte from the file i = input.read(); ) input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Çıktı

 Bu, dosyanın içindeki bir metin satırıdır. 

Yukarıdaki örnekte, ile birlikte buffer adında bir tamponlu girdi akışı oluşturduk FileInputStream. Giriş akışı, input.txt dosyasıyla bağlantılıdır .

 FileInputStream file = new FileInputStream("input.txt"); BufferedInputStream buffer = new BufferedInputStream(file); 

Burada, read()tamponlu okuyucunun dahili tamponundan bir bayt dizisini okumak için yöntemi kullandık .

available () Yöntem

Giriş akışındaki kullanılabilir bayt sayısını elde etmek için available()yöntemi kullanabiliriz . Örneğin,

 import java.io.FileInputStream; import java.io.BufferedInputStream; public class Main ( public static void main(String args()) ( try ( // Suppose, the input.txt file contains the following text // This is a line of text inside the file. FileInputStream file = new FileInputStream("input.txt"); // Creates a BufferedInputStream BufferedInputStream buffer = new BufferedInputStream(file); // Returns the available number of bytes System.out.println("Available bytes at the beginning: " + buffer.available()); // Reads bytes from the file buffer.read(); buffer.read(); buffer.read(); // Returns the available number of bytes System.out.println("Available bytes at the end: " + buffer.available()); buffer.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Çıktı

 Başlangıçta mevcut bayt sayısı: 39 Sonda kullanılabilir bayt sayısı: 36 

Yukarıdaki örnekte,

  1. İlk available()olarak, giriş akışındaki kullanılabilir bayt sayısını kontrol etmek için yöntemi kullanırız .
  2. Ardından, read()giriş akımından 3 bayt okumak için yöntemi 3 kez kullandık.
  3. Şimdi, baytları okuduktan sonra, kullanılabilir baytları tekrar kontrol ettik. Bu sefer kullanılabilir bayt sayısı 3 azaldı.

skip () Yöntemi

Belirtilen bayt sayısını atmak ve atlamak için skip()yöntemi kullanabiliriz . Örneğin,

 import java.io.FileInputStream; import java.io.BufferedInputStream; public class Main ( public static void main(String args()) ( try ( // Suppose, the input.txt file contains the following text // This is a line of text inside the file. FileInputStream file = new FileInputStream("input.txt"); // Creates a BufferedInputStream BufferedInputStream buffer = new BufferedInputStream(file); // Skips the 5 bytes buffer.skip(5); System.out.println("Input stream after skipping 5 bytes:"); // Reads the first byte from input stream int i = buffer.read(); while (i != -1) ( System.out.print((char) i); // Reads next byte from the input stream i = buffer.read(); ) // Closes the input stream buffer.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Çıktı

 5 baytı atladıktan sonra giriş akışı: dosyanın içindeki bir metin satırıdır. 

Yukarıdaki örnekte, skip()dosya giriş akışından 5 baytı atlamak için yöntemi kullandık . Bu nedenle, bayt 'T', 'h', 'i', 's've ' 'giriş akımından atlanır.

close () Yöntem

Tamponlu giriş akışını kapatmak için close()yöntemi kullanabiliriz . Bir kez close()yöntemi olarak adlandırılır, veriler okuma giriş akışı kullanamaz.

Diğer Tamponlu Giriş Akışı Yöntemleri

Yöntemler Açıklamalar
mark() verinin okunduğu giriş akışındaki konumu işaretleyin
reset() denetimi giriş akışında işaretin ayarlandığı noktaya döndürür

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

Ilginç makaleler...