Java converte arquivos em matriz de bytes
Palavras -chave: arquivo, fluxo de arquivos, fluxo de bytes, matriz de bytes, binário
Resumo: O requisito recente encontrado no trabalho é usar o HTTP para transmitir dados binários para a interface correspondente do servidor e uma série de dados binários mistas, como UserID e arquivo (criptografado). Este artigo tem como objetivo registrar algum conhecimento e resumo da conversão de arquivos em matrizes de bytes usando Java.
FileInputStream
Leia os arquivos com FileInputStream
O FileInputStream é uma subclasse do InputStream, usada para ler informações de um arquivo. O construtor recebe um tipo de arquivo ou um tipo de string representando o caminho do arquivo.
Arquivo de arquivo = novo arquivo ("filepath"); fileInputStream fis = new FileInputStream (arquivo); BytearrayOutputStream
Use bytearrayOutputStream para ler os dados do arquivo no FileInputStream
O bytearrayOutputStream é usado para criar um buffer na memória e todos os dados enviados para o "fluxo" devem ser colocados nesse buffer.
BytearrayOutputStream bos = novo bytearrayOutputStream (fis); byte [] b = novo byte [1024]; int len = -1; while ((len = fis.read (b))! = -1) {bos.write (b, 0, len);})!NOTA: O método de gravação do bytearrayOutputStream possui três formulários sobrecarregados:
Escreva (int b)
Escreva bytes especificados
escreva (byte [] b)
Escreva para toda a matriz de bytes b
escreva (byte [] b, int off, int len)
Escreva para a matriz de bytes B, comece a partir do subscrito fora de B e escreva Len Bytes.
O segundo não é usado aqui, mas o terceiro é usado. No código, o número de leituras no buffer B geralmente é 1024 (porque o comprimento especificado é exibido quando B é definido). Somente quando o final for lido, pode não ser suficiente 1024 bytes, e o número real de bytes de leitura será lido. No entanto, ao escrever para o buffer, se o número de gravações não for especificado, ou seja, Len não será especificado, todo o B será gravado. Mesmo se houver apenas uma parte do conteúdo em B, 1024 bytes ainda serão escritos. Isso causará a matriz de bytes resultante não é o comprimento real ao usar o TobyTearray!
Isso grava o fluxo de arquivo no InputStream no bytearrayoutputStream.
Use o método TobyTearRray () do ByteArrayOutputStream para obter a matriz de bytes do arquivo.
byte [] fileByte = bos.tobytearray ();
Obrigado pela leitura, espero que isso possa ajudá -lo. Obrigado pelo seu apoio a este site!