Precisamos saber que além dos arquivos , a origem e o destino do fluxo também podem ser a memória do computador.
O fluxo de entrada da matriz de bytes ByteArrayInputStream e o fluxo de saída da matriz de bytes ByteArrayOutputStream usam matrizes de bytes como origem e destino do fluxo, respectivamente.
ByteArrayInputStream(byte[]buf);ByteArrayInputStream(byte[]buf,intoffset,intlength);
A origem do fluxo da matriz de bytes construída pelo primeiro construtor são todas as unidades de bytes da matriz especificada pelo parâmetro buf; a origem do fluxo da matriz de bytes construída pelo segundo construtor é a matriz especificada por buf, obtida em ordem de deslocamento. unidades de bytes de comprimento.
O fluxo de entrada da matriz de bytes chama public int read(); o método pode ler sequencialmente um byte da fonte e o método retorna o valor do byte lido public int read(byte[] b,int off,int len ); pode ler sequencialmente o número de bytes especificado pelo parâmetro len da fonte e armazenar os bytes lidos na matriz especificada pelo parâmetro b. O parâmetro off especifica a posição inicial da matriz b para armazenar os bytes lidos. de bytes lidos. Se nenhum byte foi lido, o método read retorna -1.
ByteArrayOutputStream();ByteArrayOutputStream(intsize);
O fluxo de saída da matriz de bytes construído pelo primeiro construtor aponta para um buffer com tamanho padrão de 32 bytes. Se o número de bytes gravados pelo fluxo de saída no buffer for maior que o buffer, a capacidade do buffer aumentará automaticamente.
O tamanho inicial do buffer apontado pelo fluxo de saída da matriz de bytes construído pelo segundo construtor é especificado pelo parâmetro size. Se o número de bytes gravados pelo fluxo de saída no buffer for maior que o buffer, a capacidade do buffer será automaticamente. aumentar.
O fluxo de saída da matriz de bytes chama public void write(int b); o método pode gravar um byte no buffer sequencialmente; o método chama public void write(byte[] b, int off, int len); in Os len bytes especificados são gravados no buffer sequencialmente e o parâmetro off especifica a posição inicial dos bytes gravados em b; chamar o método public byte[] toByteArray() pode retornar todos os fluxos de saída gravados no buffer. .
Correspondentes ao fluxo da matriz de bytes estão o fluxo da matriz de caracteres da classe CharArrayReader e da classe CharArrayWriter. O fluxo da matriz de caracteres usa matrizes de caracteres como origem e destino do fluxo, respectivamente.
Por exemplo, use um fluxo de matriz para gravar "Festival do Meio Outono" e "Festival Feliz do Meio Outono" na memória (o buffer do fluxo de saída) e, em seguida, leia os dados gravados na memória:
importjava.io.*;publicclassMain{publicstaticvoidmain(Stringargs[]){try{ByteArrayOutputStreamoutByte=newByteArrayOutputStream();byte[]byteContent=mid-autumnfestival.getBytes();outByte.write(byteContent);ByteArrayInputStreaminByte=newByteArrayInputStream(outByte. toByteArray ());bytebackByte[]=newbyte[outByte.toByteArray().length];inByte.read(backByte);System.out.println(newString(backByte));CharArrayWriteroutChar=newCharArrayWriter();char[]charContent=Mid -Festival de Outono Happy.toCharArray();outChar.write(charContent);CharArrayReaderinChar=newCharArrayReader(outChar.toCharArray());charbackChar[]=newchar[outChar.toCharArray().length];inChar.read(backChar);System .out.println(newString(backChar));}catch(IOExceptionexp){}}}