IOException podczas odczytu z InputStream

Występuje dziwny problem podczas czytania zStrumień wejściowy na platformie Android. Nie jestem pewien, czy jest to problem specyficzny dla Androida, czy coś, co ogólnie robię źle.

Jedyną rzeczą, która jest specyficzna dla Androida, jest to połączenie:

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

ZwracaStrumień wejściowy dla pliku z zasobów Androida. Tak czy inaczej, tutaj trafiam na ten problem:

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

Gdy read () wykonuje, zgłaszaIOException. Dziwne jest to, że jeśli wykonam dwie sekwencyjne odczyty jednobajtowe (lub dowolną liczbę odczytów jednobajtowych), nie ma wyjątku. Na przykład to działa:

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

Każdy pomysł, dlaczego dwie sekwencyjne jednobajtowe odczyty działają, ale jedno wywołanie do czytania obu naraz rzuca wyjątek? TheStrumień wejściowy wydaje się w porządku ...is.available() zwraca ponad milion bajtów (jak powinno).

Ślad stosu pokazuje te linie tuż przedInputStream.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)

Zmiana rozmiaru bufora na pojedynczy bajt nadal powoduje błąd. Wygląda na to, że wyjątek jest wywoływany tylko podczas odczytu do tablicy bajtów.

Jeśli obcię plik do 100 000 bajtów (pierwotnie plik: 1 917 408 bajtów), działa poprawnie. Czy istnieje problem z plikami o określonym rozmiarze?

Każda pomoc jest doceniana!
Dzięki!

questionAnswers(4)

yourAnswerToTheQuestion