Clase Java ByteArrayInputStream
El flujo de entrada de matriz de bytes crea un búfer de matriz de bytes en la memoria; los datos leídos del flujo de entrada se guardan en ese búfer de matriz de bytes. Hay varias formas de crear un objeto de flujo de entrada de matriz de bytes:
Crear recibiendo una matriz de bytes como parámetro:
ByteArrayInputStream bArray = new ByteArrayInputStream(byte [] a);
Otra forma de crearlo es recibir una matriz de bytes y dos variables enteras, off y len, donde off indica el primer byte a leer y len indica la longitud de bytes a leer.
ByteArrayInputStream bArray = new ByteArrayInputStream(byte []a,
int off,
int len)
Después de crear con éxito el objeto de flujo de entrada de matriz de bytes, puedes consultar los métodos de la siguiente lista para realizar operaciones de lectura u otras operaciones en el flujo.
| Nº | Descripción del método |
|---|---|
| 1 |
public int read() Lee el siguiente byte de datos de este flujo de entrada. |
| 2 |
public int read(byte[] r, int off, int len) Lee como máximo lenbytes de datos desde este flujo de entrada a la matriz de bytes. |
| 3 |
public int available() Devuelve el número de bytes que se pueden leer de este flujo de entrada sin bloquearse. |
| 4 |
public void mark(int read) Establece la posición actual de marca en el flujo. |
| 5 |
public long skip(long n) Omite desde este flujo de entrada nbytes de entrada. |
Ejemplos
El siguiente ejemplo demuestra el uso de ByteArrayInputStream y ByteArrayOutputStream:
import java.io.*;
public class ByteStreamTest {
public static void main(String args[])throws IOException {
ByteArrayOutputStream bOutput = new ByteArrayOutputStream(12);
while( bOutput.size()!= 10 ) {
// 获取用户输入值
bOutput.write(System.in.read());
}
byte b [] = bOutput.toByteArray();
System.out.println("Print the content");
for(int x= 0 ; x < b.length; x++) {
// 打印字符
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();
}
}
}
El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:
asdfghjkly Print the content a s d f g h j k l y Converting characters to Upper case A S D F G H J K L Y
Otras extensiones
Java Stream (Flujo)