IOException al leer desde InputStream

Me encuentro con un extraño problema mientras leo de unFlujo de entrada en la plataforma Android. No estoy seguro si esto es un problema específico de Android, o algo que estoy haciendo mal en general.

Lo único que es específico de Android es esta llamada:

InputStream is = getResources().openRawResource(R.raw.myfile);

Esto devuelve unFlujo de entrada para un archivo de los activos de Android. De todos modos, aquí es donde me encuentro con el problema:

bytes[] buffer = new bytes[2];
is.read(buffer);

Cuando el read () se ejecuta, lanza unIOException. Lo extraño es que si hago dos lecturas de un solo byte secuenciales (o cualquier número de lecturas de un solo byte), no hay excepción. En ejemplo, esto funciona:

byte buffer;
buffer = (byte)buffer.read();
buffer = (byte)buffer.read();

¿Alguna idea de por qué dos lecturas de un solo byte secuencial funcionan, pero una llamada para leer ambas a la vez produce una excepción? losFlujo de entrada se ve bien...is.available() Devuelve más de un millón de bytes (como debería).

La traza de pila muestra estas líneas justo antes de laInputStream.read():

java.io.IOException
at android.content.res.AssetManager.readAsset(Native Method)
at android.content.res.AssetManager.access$800(AssetManager.java:36)
at android.content.res.AssetManager$AssetInputStream.read(AssetManager.java:542)

Cambiar el tamaño del búfer a un solo byte aún genera el error. Parece que la excepción solo se produce cuando se lee en una matriz de bytes.

Si truncamos el archivo a 100,000 bytes (el archivo es: 1,917,408 bytes originalmente) funciona bien. ¿Hay algún problema con los archivos de un tamaño determinado?

Cualquier ayuda es apreciada!
¡Gracias!

Respuestas a la pregunta(4)

Su respuesta a la pregunta