Tengo un FileInputStream creado utilizando Context.openFileInput()
. Ahora quiero convertir el archivo en una matriz de bytes.FileInputStream a matriz de bytes en la aplicación de Android
Desafortunadamente, no puedo determinar el tamaño de la matriz de bytes requerida para FileInputStream.read(byte[])
. El método available()
no funciona, y no puedo crear un archivo para verificar su longitud utilizando la ruta de acceso específica, probablemente porque la ruta de acceso no es accesible para usuarios que no son root.
leí sobre ByteArrayOutputStream
, y parece que ajustar dinámicamente el tamaño de la matriz de bytes para adaptarse, pero no puede llegar a leer desde el FileInputStream
escribir en el ByteArrayOutputStream
.
posible duplicado de [Android - ir de un URI a un InputStream a una matriz de bytes] (http://stackoverflow.com/questions/2436385/android-getting -from-a-uri-a-un-inputtream-a-un-byte-array) – Thilo
El 'byte []' que proporcione a 'leer (byte [])' no es el tamaño completo de lo que sea es que estás tratando de leer. Es un búfer que puede contener el número máximo de bytes que está dispuesto a leer a la vez, y cada llamada a 'lectura 'colocará cierta cantidad de bytes en ese búfer y devolverá un número que le indicará cuántos bytes ingresó. – ColinD