IOException beim Lesen von InputStream

Ich habe ein seltsames Problem beim Lesen von einemEingabestrom auf der Android-Plattform. Ich bin mir nicht sicher, ob es sich um ein Android-spezifisches Problem handelt oder was ich im Allgemeinen falsch mache.

Das einzige, was Android-spezifisch ist, ist dieser Aufruf:

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

Dies gibt ein zurückEingabestrom für eine Datei aus dem Android-Assets. Wie auch immer, hier stoße ich auf das Problem:

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

Wenn read () ausgeführt wird, wird einIOException. Das Seltsame ist, dass es keine Ausnahme gibt, wenn ich zwei aufeinanderfolgende Einzelbyte-Lesevorgänge (oder eine beliebige Anzahl von Einzelbyte-Lesevorgängen) durchführe. Im Beispiel funktioniert das:

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

Irgendeine Idee, warum zwei aufeinanderfolgende Einzelbyte-Lesevorgänge funktionieren, aber ein Aufruf, um beide auf einmal zu lesen, eine Ausnahme auslöst? DasEingabestrom Sieht gut aus...is.available() gibt mehr als eine Million Bytes zurück (wie es sollte).

Die Stapelverfolgung zeigt diese Linien unmittelbar vor demInputStream.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)

Das Ändern der Puffergröße in ein einzelnes Byte löst immer noch den Fehler aus. Es sieht so aus, als würde die Ausnahme nur beim Lesen in ein Byte-Array ausgelöst.

Wenn ich die Datei auf 100.000 Bytes abschneide (Datei ist ursprünglich: 1.917.408 Bytes), funktioniert es einwandfrei. Gibt es ein Problem mit Dateien ab einer bestimmten Größe?

Jede Hilfe wird geschätzt!
Vielen Dank!

Antworten auf die Frage(4)

Ihre Antwort auf die Frage