IOException при чтении из InputStream

У меня странная проблема при чтении сInputStream на платформе Android. Я не уверен, является ли это проблемой, специфичной для Android, или я вообще что-то делаю неправильно.

Единственное, что специфично для Android, это вызов:

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

Это возвращаетInputStream для файла из активов Android. В любом случае, вот где я столкнулся с проблемой:

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

Когда read () выполняется,IOException, Странно то, что, если я делаю два последовательных однобайтовых чтения (или любое количество однобайтовых чтений), исключений нет. Например, это работает:

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

Любая идея, почему два последовательных однобайтовых чтения работают, но один вызов, чтобы прочитать оба одновременно, вызывает исключение?InputStream кажется в порядке ...is.available() возвращает более миллиона байтов (как и должно быть).

Трассировка стека показывает эти строки непосредственно перед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)

Изменение размера буфера на один байт все еще вызывает ошибку. Похоже, исключение возникает только при чтении в байтовый массив.

If I truncate the file to 100,000 bytes (file is: 1,917,408 bytes originally) it works fine. Is there a problem with files over a certain size?

Любая помощь приветствуется!
Спасибо!

Ответы на вопрос(4)

Ваш ответ на вопрос