工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Java ByteArrayInputStream クラス

Java ByteArrayInputStream クラス

このチュートリアルでは、例を使用して Java ByteArrayInputStream とそのメソッドについて学習します。

ByteArrayInputStream java.io のクラス パッケージを使用して、入力データの配列 (バイト単位) を読み取ることができます。

InputStream を拡張します 抽象クラス。

注意 :ByteArrayInputStream で の場合、入力ストリームはバイト配列を使用して作成されます。その特定のバイト配列のデータを格納するための内部配列が含まれています。


ByteArrayInputStream を作成する

バイト配列入力ストリームを作成するには、java.io.ByteArrayInputStream をインポートする必要があります 最初にパッケージ。パッケージをインポートしたら、入力ストリームを作成する方法を次に示します。

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

ここでは、arr からデータ全体を読み取る入力ストリームを作成しました。 配列。ただし、配列から一部のデータのみを読み取る入力ストリームを作成することもできます。

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

ここで、入力ストリームは length に等しいバイト数を読み取ります start から始まる配列から


ByteArrayInputStream のメソッド

ByteArrayInputStream クラスは InputStream に存在するさまざまなメソッドの実装を提供します クラス。

read() メソッド

例:データを読み取るための 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();
    }
  }
}

出力

The bytes read from the input stream: 1, 2, 3, 4,

上記の例では、input という名前のバイト配列入力ストリームを作成しました。 .

ByteArrayInputStream input = new ByteArrayInputStream(array);

ここで、入力ストリームには、指定された配列からのすべてのデータが含まれます。入力ストリームからデータを読み取るために、 read() を使用しました メソッド。


available() メソッド

入力ストリームで利用可能なバイト数を取得するには、 available() を使用できます 方法。たとえば、

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

出力

Available bytes at the beginning: 4
Available bytes at the end: 2

上記の例では、

<オール>
  • available() を使用しました 入力ストリームで利用可能なバイト数をチェックするメソッド
  • その後、read() を使用しました メソッドを 2 回呼び出して、入力ストリームから 2 バイトを読み取ります。
  • 2 バイトを読み取った後、使用可能なバイトを確認しました。今度は利用可能なバイト数が 2 減少しました。

  • skip() メソッド

    指定されたバイト数を破棄してスキップするには、 skip() を使用できます 方法。たとえば、

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

    出力

    Input stream after skipping 2 bytes: 3, 4,
    

    上記の例では、skip() を使用しました。 入力ストリームから 2 バイトのデータをスキップするメソッド。したがって 12 入力ストリームから読み取られません。


    close() メソッド

    入力ストリームを閉じるには、 close() を使用できます メソッド。

    ただし、close() メソッドは ByteArrayInputStream では効果がありません クラス。 close() の後でも、このクラスのメソッドを使用できます。 メソッドが呼び出されます。


    ByteArrayInputStream のその他のメソッド

    メソッド 説明
    finalize() 確実に close() メソッドが呼び出されます
    mark() データが読み取られた入力ストリーム内の位置をマークします
    reset() マークが設定された入力ストリーム内のポイントにコントロールを返します
    markSupported() 入力ストリームが mark() をサポートしているかどうかをチェックします と reset()

    詳細については、Java ByteArrayInputStream (公式の Java ドキュメント) にアクセスしてください。


    Java

    1. Java コピー配列
    2. Java 最終キーワード
    3. オペレーターの Java インスタンス
    4. Java ネストされた静的クラス
    5. Java匿名クラス
    6. Java シングルトン クラス
    7. Java リフレクション
    8. Java ObjectOutputStream クラス
    9. Java スキャナー クラス
    10. Javaジェネリック
    11. Java ファイル クラス