IOException при чтении из InputStream
Я сталкиваюсь со странной проблемой при чтении изInputStream на платформе Android. Я'я не уверен, что это проблема, связанная с Android, или яЯ делаю неправильно в общем.
Единственное, что специфично для Android, это вызов:
InputStream is = getResources().openRawResource(R.raw.myfile);
Это возвращаетInputStream для файла из активов Android. В любом случае, здесьs, где я сталкиваюсь с проблемой:
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)
Изменение размера буфера на один байт все еще вызывает ошибку. Похоже, исключение возникает только при чтении в байтовый массив.
Если я усекаю файл до 100 000 байт (изначально файл: 1 917 408 байт), он работает нормально. Есть ли проблема с файлами более определенного размера?
Любая помощь приветствуется!
Спасибо!