Java - ByteArrayInputStream
A classe ByteArrayInputStream permite que um buffer na memória seja usado como um InputStream. A fonte de entrada é uma matriz de bytes.
A classe ByteArrayInputStream fornece os seguintes construtores.
Sr. Não. | Construtor e Descrição |
---|---|
1 | ByteArrayInputStream(byte [] a) Este construtor aceita uma matriz de bytes como parâmetro. |
2 | ByteArrayInputStream(byte [] a, int off, int len) Este construtor leva uma matriz de bytes e dois valores inteiros, onde off é o primeiro byte a ser lido e len é o número de bytes a serem lidos. |
Depois de ter o objeto ByteArrayInputStream em mãos, há uma lista de métodos auxiliares que podem ser usados para ler o fluxo ou para fazer outras operações no fluxo.
Sr. Não. | Método e Descrição |
---|---|
1 | public int read() Este método lê o próximo byte de dados do InputStream. Retorna um int como o próximo byte de dados. Se for o fim do arquivo, retorna -1. |
2 | public int read(byte[] r, int off, int len) Este método lê até len número de bytes a partir de offdo fluxo de entrada em uma matriz. Retorna o número total de bytes lidos. Se for o fim do arquivo, -1 será retornado. |
3 | public int available() Fornece o número de bytes que podem ser lidos desse fluxo de entrada de arquivo. Retorna um int que fornece o número de bytes a serem lidos. |
4 | public void mark(int read) Isso define a posição atual marcada no fluxo. O parâmetro fornece o limite máximo de bytes que podem ser lidos antes que a posição marcada se torne inválida. |
5 | public long skip(long n) Salta 'n' número de bytes do fluxo. Isso retorna o número real de bytes ignorados. |
Exemplo
A seguir está o exemplo para demonstrar ByteArrayInputStream e ByteArrayOutputStream.
import java.io.*;
public class ByteStreamTest {
public static void main(String args[])throws IOException {
ByteArrayOutputStream bOutput = new ByteArrayOutputStream(12);
while( bOutput.size()!= 10 ) {
// Gets the inputs from the user
bOutput.write("hello".getBytes());
}
byte b [] = bOutput.toByteArray();
System.out.println("Print the content");
for(int x = 0 ; x < b.length; x++) {
// printing the characters
System.out.print((char)b[x] + " ");
}
System.out.println(" ");
int c;
ByteArrayInputStream bInput = new ByteArrayInputStream(b);
System.out.println("Converting characters to Upper case " );
for(int y = 0 ; y < 1; y++) {
while(( c = bInput.read())!= -1) {
System.out.println(Character.toUpperCase((char)c));
}
bInput.reset();
}
}
}
A seguir está o exemplo de execução do programa acima -
Resultado
Print the content
h e l l o h e l l o
Converting characters to Upper case
H
E
L
L
O
H
E
L
L
O