Necesitamos saber que además de los archivos , el origen y el destino de la transmisión también pueden ser la memoria de la computadora.
El flujo de entrada de matriz de bytes ByteArrayInputStream y el flujo de salida de matriz de bytes ByteArrayOutputStream utilizan matrices de bytes como origen y destino de la secuencia, respectivamente.
ByteArrayInputStream(byte[]buf);ByteArrayInputStream(byte[]buf,intoffset,intlength);
La fuente del flujo de matriz de bytes construida por el primer constructor son todas las unidades de bytes de la matriz especificada por el parámetro buf; la fuente del flujo de matriz de bytes construida por el segundo constructor es la matriz especificada por buf, tomada en orden desde el desplazamiento. Unidades de bytes de longitud.
El flujo de entrada de la matriz de bytes llama a public int read(); el método puede leer secuencialmente un byte de la fuente y el método devuelve el valor del byte leído; puede leer secuencialmente el número de bytes especificado por el parámetro len de la fuente y almacenar los bytes leídos en la matriz especificada por el parámetro b. El parámetro off especifica la posición inicial de la matriz b para almacenar los bytes leídos. Este método devuelve el número real. de bytes leídos Si no se ha leído ningún byte, el método de lectura devuelve -1.
ByteArrayOutputStream();ByteArrayOutputStream(intsize);
El flujo de salida de la matriz de bytes construido por el primer constructor apunta a un búfer con un tamaño predeterminado de 32 bytes. Si el número de bytes escritos por el flujo de salida en el búfer es mayor que el búfer, la capacidad del búfer aumentará automáticamente.
El tamaño inicial del búfer al que apunta el flujo de salida de la matriz de bytes construido por el segundo constructor se especifica mediante el tamaño del parámetro. Si el número de bytes escritos por el flujo de salida en el búfer es mayor que el búfer, la capacidad del búfer aumentará automáticamente. aumentar.
El flujo de salida de la matriz de bytes llama a public void write(int b); el método puede escribir un byte en el búfer de forma secuencial; el método llama a public void write(byte[] b, int off, int len); en Los bytes de len especificados se escriben en el búfer de forma secuencial, y el parámetro off especifica la posición inicial de los bytes escritos desde b; llamar al método público byte [] toByteArray () puede devolver todos los flujos de salida escritos en el byte del búfer. .
Correspondientes al flujo de matriz de bytes son la clase CharArrayReader del flujo de matriz de caracteres y la clase CharArrayWriter. El flujo de matriz de caracteres utiliza matrices de caracteres como origen y destino de la secuencia, respectivamente.
Por ejemplo, utilice una secuencia de matriz para escribir "festival del medio otoño" y "Feliz festival del medio otoño" en la memoria (el búfer de la secuencia de salida) y luego lea los datos escritos de la memoria:
importjava.io.*;publicclassMain{publicstaticvoidmain(Stringargs[]){try{ByteArrayOutputStreamoutByte=newByteArrayOutputStream();byte[]byteContent=mid-autumnfestival.getBytes();outByte.write(byteContent);ByteArrayInputStreaminByte=newByteArrayInputStream(outByte.to matriz de bytes ());bytebackByte[]=newbyte[outByte.toByteArray().length];inByte.read(backByte);System.out.println(newString(backByte));CharArrayWriteroutChar=newCharArrayWriter();char[]charContent=Mid -Festival de Otoño Happy.toCharArray();outChar.write(charContent);CharArrayReaderinChar=newCharArrayReader(outChar.toCharArray());charbackChar[]=newchar[outChar.toCharArray().length];inChar.read(backChar);System .out.println(newString(backChar));}catch(IOExceptionexp){}}}