从
Android平台上的InputStream读取时,我遇到了一个奇怪的问题.我不知道这是否是一个Android特定的问题,或者我在做错事情.
这是唯一的一个特定的是这个电话:
InputStream is = getResources().openRawResource(R.raw.myfile);
这将从Android资产返回一个文件的InputStream.无论如何,这里是我遇到的问题:
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)
将缓冲区大小更改为单个字节仍会抛出错误.看起来异常仅在读入字节数组时出现.
如果我将文件截断到100,000字节(文件是:原来是1,917,408字节),它可以正常工作.某个大小的文件是否有问题?
任何帮助是赞赏!
谢谢!