Bu eğiticide, örnekler yardımıyla Java ByteArrayInputStream ve yöntemlerini öğreneceğiz.
ByteArrayInputStream
Sınıf java.io
paketi (bayt) giriş veri dizisini okumak için kullanılabilir.
InputStream
Soyut 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.ByteArrayInputStream
paketi 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, arr
diziden 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
ByteArrayInputStream
Sınıf, farklı yöntemler için uygulamalar içinde mevcut içerir InputStream
sınıfı.
read () Yöntem
read()
- giriş akışında bulunan dizideki tek baytı okurread(byte() array)
- giriş akışındaki baytları okur ve belirtilen dizide depolarread(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,
- Bu
available()
yöntemi girdi akışındaki kullanılabilir bayt sayısını kontrol etmek için kullandık . - Daha sonra
read()
, giriş akışından 2 bayt okumak için yöntemi 2 kez kullandık. - Ş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 ByteArrayInputStream
sı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.