У меня возникает странная проблема при чтении с InputStream на платформе Android. Я не уверен, что это конкретная проблема Android, или что-то, что я делаю неправильно в целом.IOException при чтении из InputStream
Единственное, что это Android специфический этот вызов:
InputStream is = getResources().openRawResource(R.raw.myfile);
Это возвращает InputStream для файла из Android активов. В любом случае, вот где я бегу в вопрос:
bytes[] buffer = new bytes[2];
is.read(buffer);
Когда чтение() выполняет он бросает 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 байт изначально), он отлично работает. Есть ли проблемы с файлами определенного размера?
Любая помощь приветствуется!
Спасибо!
Файл 1mb работал, но 1.5MB файл не сделал. Есть ли ограничение по размеру для активов? – DJayC