java – 从InputStream读取IOException
发布时间:2020-12-14 05:26:42 所属栏目:Java 来源:网络整理
导读:从 Android平台上的InputStream读取时,我遇到了一个奇怪的问题.我不知道这是否是一个Android特定的问题,或者我在做错事情. 这是唯一的一个特定的是这个电话: InputStream is = getResources().openRawResource(R.raw.myfile); 这将从Android资产返回一个文
从
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字节),它可以正常工作.某个大小的文件是否有问题? 任何帮助是赞赏! 解决方法
(我的帖子给android开发者没有出现,所以我会尝试在这里重新发布)
IIRC,这个问题来自尝试访问在构建APK时被压缩的文件. 因此,要解决这个问题,请给它一个不会压缩的文件扩展名.我忘记了什么扩展被跳过的列表,但已经被压缩的文件类型(例如mp3,jpg)可能会工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |