Java convierte los archivos en la matriz de bytes
Palabras clave: archivo, transmisión de archivo, transmisión de byte, matriz de bytes, binario
Resumen: El requisito reciente encontrado en el trabajo es utilizar HTTP para transmitir los datos binarios a la interfaz correspondiente del servidor, y una serie de datos binarios mixtos, como ID de usuario y archivo (encriptado). Este artículo tiene como objetivo registrar algunos conocimientos y resumen de la conversión de archivos en matrices de bytes usando Java.
FileInputStream
Lea archivos con FileInputStream
FileInputStream es una subclase de InputStream, que se utiliza para leer información de un archivo. El constructor recibe un tipo de archivo o un tipo de cadena que representa la ruta del archivo.
Archivo archivo = nuevo archivo ("filepath"); fileInputStream fis = new FileInputStream (archivo); BytearRayOutputStream
Use byteArrayOutputStream para leer los datos del archivo en fileInputStream
ByteArRayOutputStream se usa para crear un búfer en la memoria, y todos los datos enviados a la "transmisión" deben colocarse en este búfer.
ByteArRayOutputStream bos = new byteArRaReOutputStream (fis); byte [] b = new byte [1024]; int len = -1; while ((len = fis.read (b))! = -1) {bos.write (b, 0, len);}Nota: El método de escritura de bytearRayOutputStream tiene tres formularios sobrecargados:
escribir (int b)
Escribir bytes especificados
escribir (byte [] b)
Escribe a toda la matriz de bytes B
escribir (byte [] b, int off, int len)
Escriba a la matriz de bytes B, comience desde el subíndice fuera del subíndice de B y escriba Bytes Len.
El segundo no se usa aquí, pero el tercero se usa. En el código, el número de lecturas en el búfer B es generalmente 1024 (porque la longitud especificada se muestra cuando se define B). Solo cuando se lea el final, puede no ser suficiente 1024 bytes, y se leerá el número real de bytes de lectura. Sin embargo, al escribir en el búfer, si no se especifica el número de escrituras, es decir, no se especifica Len, entonces se escribirá la B completa. Incluso si solo hay una parte del contenido en B, todavía se escribirán 1024 bytes. ¡Esto causará la matriz de bytes resultante no es la longitud real cuando se usa tobytearray!
Esto escribe la transmisión del archivo desde InputStream en el bytearRayOutputStream.
Use el método tobytearray () de byteArRaYoutputStream para obtener la matriz de bytes del archivo.
byte [] filyte = bos.tobytearray ();
Gracias por leer, espero que pueda ayudarte. ¡Gracias por su apoyo para este sitio!