首頁  >  文章  >  Java  >  Java 位元組數組輸入流

Java 位元組數組輸入流

WBOY
WBOY原創
2024-08-30 16:09:13702瀏覽

ByteArrayInputStream 類別由兩個階段組成:位元組數組階段和輸入流階段。位元組數組在保存輸入流的重要資料和必要位元組方面發揮關鍵作用。 Java ByteArrayInputStream 類別由內部緩衝區組成,負責將位元組陣列當作流讀取。位元組數組傳遞要作為輸入流提供的資料。當該數據存在於緩衝區中時,該數據會增加。使用此類,資料的遍歷和檢索變得靈活且無縫。

開始您的免費軟體開發課程

網頁開發、程式語言、軟體測試及其他

文法:

public class ByteArrayInputStream extends InputStream

作為Java ByteArrayInputStream的一部分,執行流程如下:

聲明了 ByteArrayInputStream 的公共類,它擴展了介面作為與輸入流中放入的流進行交互的媒介。

ByteArrayInputStream 類別在 Java 中如何運作?

ByteArrayInputStream 的工作原理非常簡單,其主要原理是將位元組陣列無縫轉換為輸入流。作為此類的另一個優點,緩衝區確保由API 組成的java.io.ByteArrayInput 套件允許您將位元組數組中的資料作為位元組數組的流讀取,然後將其轉換為輸入流,這將被送入緩衝區。 ByteArrayInputstream 是InputStream 類別的子類別。因此,ByteArrayInputStream可以用作InputStream。如果資料作為輸入流排列並儲存在數組中,則可以將其包裝到位元組數組中,並可以輕鬆轉換為流。一旦 ByteArrayInputStream 物件準備就緒,就可以使用一系列輔助方法來讀取流並對其進行操作。

Java ByteArrayInputStream 的建構子

以下建構子用來支援java的ByteArrayInputStream類別。

ByteArrayInputStream[byte a]

作為 Java ByteArrayInputStream 的一部分,此建構函式的工作方式用於接受一組準備好的位元組數組,特別是作為包和類別的一部分存在的內部緩衝區記憶體中的參數。

ByteArrayInputStream(byte [] a, int off, int len)

這個建構函式作為java ByteArrayInputStream 類別的一部分,從流中傳遞三個參數作為參數,其中考慮了位元組數組、整數關閉和定義整數的長度,並且當作為流提供時,流也保持順序輸入到緩衝區的記憶體中,這意味著首先是位元組數組a[],然後是兩個整數值,其中off 是要讀取的第一個字節,後面是要讀取的位元組數的長度。

Java ByteArrayInputStream 的方法

以下是Java ByteArrayInputStream的方法:

  1. public int read()
  2. public int read(byte[] r, int off, int len)
  3. public int available()
  4. 公無效標記(int read)
  5. 公長跳過(long n)
  6. 公共布林標記Supported()
  7. 公有無效重置()
  8. public void close()

1. public int read()

此方法是 ByteArrayInputStream 類別的一部分,用於讀取已經流動的輸入流中可用的下一個字節,它會傳回範圍為 0-255 的 int 類型。如果緩衝區中沒有位元組作為輸入流,則它已返回到流的末尾,並返回 -1 作為值。

2. public int read(byte[] r, int off, int len)

此方法從輸入流中讀取從off開始的位元組數長度的位元組到數組中,並傳回總位元組數,直到返回-1的最後一個位元組。

3. public int available()

作為 ByteArrayInputStream 類別的一部分,此方法用於讀取和確認可從輸入流讀取的位元組總數。

4.公用無效標記(int read)

作為 ByteArrayInputStream 類別的一部分,該方法用於標記和設定輸入流的目前位置。基本上,它設定了一個讀取限制,以獲取在標記的限制集失效之前可以讀取的最大位元組數。

5.公長跳過(long n)

作為 ByteArrayInputStream 類別的一部分,此方法用於跳過輸入流中的位元組數作為該方法的參數。

6.公共布爾標記Supported()

此方法用於測試輸入流是否支援標記的限製或在沒有其存在的情況下正常運作。它有一個特殊的功能,即每當支援該標記時就將其用作方法;它傳回一個始終為 true 的值。

7. public void reset()

This method is used to reset the position of the marker as it is provoked by the mark() method. The added advantage is to reposition and reset the marker for traversing.

8. public void close()

This method plays a crux to release all the resources once close. When It gets called, the input stream gets closed, and the stream gets associated with the garbage collector.

Examples to Implement of Java ByteArrayInputStream

Below are the examples of Java ByteArrayInputStream:

Example #1

This program is used to illustrate the read() method byte by byte in ByteArrayInputStream.

Code:

import java.io.*;
public class Input_Buffer_Stream1 {
public static void main(String[] args) throws Exception {
byte guava = 0;
byte pine = 0;
byte kiwi = 0;
byte orange = 0;
byte[] buffr = {guava, pine, kiwi,orange};
ByteArrayInputStream fruits = new ByteArrayInputStream(buffr);
int k = 0;
while((k=fruits.read())!=-1) {
System.out.println("These fruits are really tasty and relising to have & Its the time to have ad enjoy!");
}
}
}

Output:

Java 位元組數組輸入流

Example #2

This program illustrates the available method of ByteArrayInputStream.

Code :

import java.io.ByteArrayInputStream;
public class Input_Buffer_Stream2 {
public static void main(String[] args) {
byte[] buffr= {20,22};
ByteArrayInputStream bytes = new ByteArrayInputStream(buffr);
int bytes_Available = bytes.available();
System.out.println("no of bytes available:" + bytes_Available);
}
}

Output:

Java 位元組數組輸入流

Example #3

This program illustrates the mark method of the ByteArrayInputStream class.

Code:

import java.io.ByteArrayInputStream;
public class Input_Buffer_Stream3 {
public static void main(String[] args) {
byte[] buffr= {20,22,19,10};
ByteArrayInputStream bytes_arr = new ByteArrayInputStream(buffr);
bytes_arr.mark(0);
System.out.println("These are the marked bytes of the stream:" + bytes_arr);
}
}

Output:

Java 位元組數組輸入流

Example #4

This program illustrates the skip method of the ByteArrayInputStream class.

Code :

import java.io.ByteArrayInputStream;
public class Input_Buffer_Stream4 {
public static void main(String[] args) throws Exception {
byte[] buffr= {20,22,18,10};
ByteArrayInputStream learning = null;
learning = new ByteArrayInputStream(buffr);
long num = learning.skip(1);
System.out.println("Char : "+(char)learning.read());
}
}

Output:

Java 位元組數組輸入流

Example #5

This program illustrates the boolean mark supported method of the ByteArrayInputStream class.

Code :

import java.io.ByteArrayInputStream;
public class Input_Buffer_Stream_5 {
public static void main(String[] args) {
byte[] buff = {15, 18, 20, 40, 52};
ByteArrayInputStream educba = null;
educba = new ByteArrayInputStream(buff);
boolean checker = educba.markSupported();
System.out.println("\n mark is supported for : "+ checker );
}
}

Output:

Java 位元組數組輸入流

Example #6

This program illustrates the presence of boolean mark, reset, and close method of the ByteArrayInputStream class.

Code:

import java.io.ByteArrayInputStream;
import java.io.IOException;
public class Input_Buffer_Stream_5 {
public static void main(String[] args) {
byte[] buff = {15, 18, 20, 40, 52};
ByteArrayInputStream educba = null;
educba = new ByteArrayInputStream(buff);
boolean checker = educba.markSupported();
System.out.println("\n mark is supported for : "+ checker );
if(educba.markSupported())
{
educba.reset();
System.out.println("\n supports for the marking limit once reset");
System.out.println("Char : "+(char)educba.read());
}
else
{
System.out.println("It is not supporting the positioning using reset method");
}
System.out.println("educba.markSupported() supported reset() : "+checker);
if(educba!=null)
{
try {
educba.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
}
} <strong>Output:</strong>

Java 位元組數組輸入流

Conclusion

Java ByteArrayInputStream is a class that has a lot of capability and versatility to play around with the arrays in the internal buffer, which is the beauty of the class. It does not require any external class or plugin to support its base methods which work with a lot of functionality. ByteArrayInputStream together forms a perfect combination to feed the input and output stream related data.

以上是Java 位元組數組輸入流的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn