加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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)可能会工作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读