IOException durante a leitura do InputStream

Eu estou correndo em um problema estranho ao ler de umInputStream na plataforma Android. Não tenho certeza se esse é um problema específico do Android ou algo que estou fazendo de maneira errada.

A única coisa que é específica do Android é esta chamada:

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

Isso retorna umInputStream para um arquivo dos recursos do Android. De qualquer forma, aqui é onde eu me deparo com o problema:

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

Quando o read () executa, lança umIOException. O estranho é que, se eu fizer duas leituras de byte único sequenciais (ou qualquer número de leituras de byte único), não haverá exceção. No exemplo, isso funciona:

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

Alguma idéia de por que dois byte único seqüencial funcionam, mas uma chamada para ler os dois de uma só vez lança uma exceção? oInputStream parece bem ...is.available() retorna mais de um milhão de bytes (como deveria).

O rastreamento de pilha mostra essas linhas antes daInputStream.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)

Alterar o tamanho do buffer para um único byte ainda gera o erro. Parece que a exceção só é levantada ao ler em uma matriz de bytes.

Se eu truncar o arquivo para 100.000 bytes (o arquivo é: 1.917.408 bytes originalmente) ele funciona bem. Existe algum problema com arquivos de um determinado tamanho?

Qualquer ajuda é apreciada!
Obrigado!

questionAnswers(4)

yourAnswerToTheQuestion