IOException lors de la lecture d'InputStream

Je suis en cours d'exécution dans un étrange problème lors de la lecture d'un InputStream sur la plate-forme Android. Je ne suis pas sûr si c'est un Android problème spécifique, ou quelque chose que je fais mal en général.

La seule chose qui est Android spécifique est cet appel:

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

Il renvoie un InputStream pour un fichier à partir de l'Android actifs. De toute façon, c'est là que je tombe sur la question:

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

Lors de la lecture() exécute, il jette un IOException. La chose étrange est que si je fais deux séquentielle seul octet lit (ou n'importe quel nombre d'octet lit), il n'y a pas d'exception. Dans l'exemple, cela fonctionne:

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

Aucune idée pourquoi deux séquentielle seul octet lit de travail, mais un appel à lire les deux à la fois, déclenche une exception? Le InputStream semble bien... is.available() retourne plus d'un million d'octets (comme il se doit).

Trace de la pile de montre ces lignes juste avant la InputStream.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)

La modification de la taille de la mémoire tampon d'un seul octet en jette toujours l'erreur. Il ressemble à l'exception n'est soulevée lors de la lecture dans un tableau d'octets.

Si je tronquer le fichier pour 100 000 octets (fichier est: 1,917,408 octets à l'origine), il fonctionne très bien. Est-il un problème avec les fichiers de plus d'une certaine taille?

Toute aide est très appréciée!
Merci!

source d'informationauteur DJayC