Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Java

Classe Java ByteArrayInputStream

Classe Java ByteArrayInputStream


Neste tutorial, aprenderemos sobre Java ByteArrayInputStream e seus métodos com a ajuda de exemplos.

O ByteArrayInputStream classe do java.io pacote pode ser usado para ler uma matriz de dados de entrada (em bytes).

Ele estende o InputStream classe abstrata.



Observação :Em ByteArrayInputStream , o fluxo de entrada é criado usando a matriz de bytes. Ele inclui uma matriz interna para armazenar dados dessa matriz de bytes específica.


Criar um ByteArrayInputStream


Para criar um fluxo de entrada de matriz de bytes, devemos importar o java.io.ByteArrayInputStream pacote primeiro. Depois de importar o pacote, aqui está como podemos criar um fluxo de entrada.
// Creates a ByteArrayInputStream that reads entire array
ByteArrayInputStream input = new ByteArrayInputStream(byte[] arr);

Aqui, criamos um fluxo de entrada que lê dados inteiros do arr variedade. No entanto, também podemos criar o fluxo de entrada que lê apenas alguns dados do array.
// Creates a ByteArrayInputStream that reads a portion of array
ByteArrayInputStream input = new ByteArrayInputStream(byte[] arr, int start, int length);

Aqui o fluxo de entrada lê o número de bytes igual a comprimento do array começando do start posição.

Métodos de ByteArrayInputStream


O ByteArrayInputStream classe fornece implementações para diferentes métodos presentes no InputStream classe.

Método read()

Exemplo:ByteArrayInputStream para ler dados

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

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

No exemplo acima, criamos um fluxo de entrada de matriz de bytes chamado input .
ByteArrayInputStream input = new ByteArrayInputStream(array);

Aqui, o fluxo de entrada inclui todos os dados da matriz especificada. Para ler dados do fluxo de entrada, usamos o read() método.

Método available()




Para obter o número de bytes disponíveis no fluxo de entrada, podemos usar o available() método. Por exemplo,
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();
    }
  }
}

Saída
Available bytes at the beginning: 4
Available bytes at the end: 2

No exemplo acima,
  1. Usamos o available() método para verificar o número de bytes disponíveis no fluxo de entrada.
  2. Usamos então o read() método 2 vezes para ler 2 bytes do fluxo de entrada.
  3. Agora, depois de ler os 2 bytes, verificamos os bytes disponíveis. Desta vez, os bytes disponíveis diminuíram em 2.

Método skip()


Para descartar e pular o número especificado de bytes, podemos usar o skip() método. Por exemplo,
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();
    }
  }
}

Saída
Input stream after skipping 2 bytes: 3, 4,

No exemplo acima, usamos o skip() método para pular 2 bytes de dados do fluxo de entrada. Portanto 1 e 2 não são lidos do fluxo de entrada.

método close()


Para fechar o fluxo de entrada, podemos usar o close() método.

No entanto, o close() método não tem efeito em ByteArrayInputStream classe. Podemos usar os métodos desta classe mesmo após o close() método é chamado.

Outros métodos de ByteArrayInputStream

Métodos Descrições
finalize() garante que o close() método é chamado
mark() marca a posição no fluxo de entrada até a qual os dados foram lidos
reset() retorna o controle ao ponto no fluxo de entrada onde a marca foi definida
markSupported() verifica se o fluxo de entrada suporta mark() e reset()

Para saber mais, visite Java ByteArrayInputStream (documentação oficial do Java).

Java

  1. Copiar Matrizes Java
  2. Palavra-chave final Java
  3. Java instanceof Operator
  4. Classe estática aninhada em Java
  5. Classe anônima Java
  6. Classe Java Singleton
  7. Reflexão Java
  8. Classe Java ObjectOutputStream
  9. Classe de scanner Java
  10. Genéricos Java