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?
Любая помощь приветствуется!
Спасибо!