Java ByteArrayInputStream (Örneklerle)

Bu eğiticide, örnekler yardımıyla Java ByteArrayInputStream ve yöntemlerini öğreneceğiz.

ByteArrayInputStreamSınıf java.iopaketi (bayt) giriş veri dizisini okumak için kullanılabilir.

InputStreamSoyut sınıfı genişletir .

Not : içinde ByteArrayInputStream, giriş akışı bayt dizisi kullanılarak oluşturulur. Söz konusu bayt dizisinin verilerini depolamak için dahili bir dizi içerir.

ByteArrayInputStream oluşturma

Bir bayt dizisi giriş akışı yaratmak için önce java.io.ByteArrayInputStreampaketi içe aktarmalıyız . Paketi içe aktardıktan sonra, işte bir giriş akışını nasıl oluşturabileceğimiz.

 // Creates a ByteArrayInputStream that reads entire array ByteArrayInputStream input = new ByteArrayInputStream(byte() arr); 

Burada, arrdiziden tüm verileri okuyan bir giriş akışı oluşturduk . Bununla birlikte, diziden yalnızca bazı verileri okuyan giriş akışını da oluşturabiliriz.

 // Creates a ByteArrayInputStream that reads a portion of array ByteArrayInputStream input = new ByteArrayInputStream(byte() arr, int start, int length); 

Burada giriş akışı, başlangıç ​​konumundan başlayarak diziden uzunluğa eşit bayt sayısını okur.

ByteArrayInputStream Yöntemleri

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

read () Yöntem

  • read() - giriş akışında bulunan dizideki tek baytı okur
  • read(byte() array) - giriş akışındaki baytları okur ve belirtilen dizide depolar
  • read(byte() array, int start, int length) - akıştan uzunluğa eşit bayt sayısını okur ve konum başlangıcından başlayarak belirtilen dizide depolar

Örnek: Verileri okumak için ByteArrayInputStream

 import java.io.ByteArrayInputStream; public class Main ( public static void main(String() args) ( // Creates an array of byte byte() array = (1, 2, 3, 4); try ( ByteArrayInputStream input = new ByteArrayInputStream(array); System.out.print("The bytes read from the input stream: "); for(int i= 0; i < array.length; i++) ( // Reads the bytes int data = input.read(); System.out.print(data + ", "); ) input.close(); ) catch(Exception e) ( e.getStackTrace(); ) ) ) 

Çıktı

 Giriş akışından okunan baytlar: 1, 2, 3, 4, 

Yukarıdaki örnekte, adlı bir bayt dizisi giriş akışı oluşturduk input.

 ByteArrayInputStream input = new ByteArrayInputStream(array); 

Burada, girdi akışı, belirtilen dizideki tüm verileri içerir. Giriş akışından veri okumak için read()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.ByteArrayInputStream; public class Main ( public static void main(String args()) ( // Creates an array of bytes byte() array = ( 1, 2, 3, 4 ); try ( ByteArrayInputStream input = new ByteArrayInputStream(array); // Returns the available number of bytes System.out.println("Available bytes at the beginning: " + input.available()); // Reads 2 bytes from the input stream input.read(); input.read(); // Returns the available number of bytes System.out.println("Available bytes at the end: " + input.available()); input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Çıktı

 Başlangıçta mevcut baytlar: 4 Sonda mevcut baytlar: 2 

Yukarıdaki örnekte,

  1. Bu available()yöntemi girdi akışındaki kullanılabilir bayt sayısını kontrol etmek için kullandık .
  2. Daha sonra read(), giriş akışından 2 bayt okumak için yöntemi 2 kez kullandık.
  3. Şimdi, 2 baytı okuduktan sonra, mevcut baytları kontrol ettik. Bu sefer kullanılabilir baytlar 2 azaldı.

skip () Yöntemi

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

 import java.io.ByteArrayInputStream; public class Main ( public static void main(String args()) ( // Create an array of bytes byte() array = ( 1, 2, 3, 4 ); try ( ByteArrayInputStream input = new ByteArrayInputStream(array); // Using the skip() method input.skip(2); System.out.print("Input stream after skipping 2 bytes: "); int data = input.read(); while (data != -1) ( System.out.print(data + ", "); data = input.read(); ) // close() method input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Çıktı

 2 bayt atladıktan sonra giriş akışı: 3, 4, 

Yukarıdaki örnekte, giriş akışından 2 baytlık veriyi atlamak için skip () yöntemini kullandık. Dolayısıyla, 1 ve 2 giriş akışından okunmaz.

close () Yöntem

Giriş akışını kapatmak için close()yöntemi kullanabiliriz .

Bununla birlikte, close()yöntemin ByteArrayInputStreamsınıfta hiçbir etkisi yoktur . close()Yöntem çağrıldıktan sonra bile bu sınıfın yöntemlerini kullanabiliriz .

ByteArrayInputStream'in Diğer Yöntemleri

Yöntemler Açıklamalar
finalize() sağlar close()yöntemi olarak adlandırılır
mark() verinin okunduğu giriş akışındaki konumu işaretler
reset() denetimi giriş akışında işaretin ayarlandığı noktaya döndürür
markSupported() giriş akışının destekleyip desteklemediğini kontrol eder mark()vereset()

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

Ilginç makaleler...