從Android平臺上的InputStream中讀取時,我遇到了一個奇怪的問題。我不確定這是一個Android特定的問題,還是我一般做錯的事情。從InputStream中讀取時出現IOException
是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();
任何想法,爲什麼兩個連續的單字節讀取工作,但一個調用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